CSE 333 22au Final Exam Topics
This list summarizes topics we've covered since those on the
midterm. The final exam will be biased towards these items but anything
we've done this quarter could appear, so you should also review things on
the midterm list. Generally, if you've kept up with everything
that's been covered in lecture, sections, exercises, and homework
assignments you should be well prepared, and questions may be based on
any of the work we've done this quarter. A good way to
study is to find a quiet room and work the problems on
some of the old exams while watching the clock, and then look
at the sample solutions.
You might also find it helpful
to solve some of the practice exercises at the end of most
lectures if you haven't done them already.
You should understand the ideas and core concepts and how to use
them, but don't memorize API details. We'll provide hints or reference
material on the exam
for API details as needed, but you should know the basics.
The exam will be closed book, etc., as was done for the midterm,
but you can have two 5x8 notecards with any hand-written notes you wish.
One of those could be the notecard from the midterm exam, or you can
have two completely new notecards.
As with the midterm, the
notes must be hand-written, i.e., no computer printouts, no scanned/reduced
notes, and no electronic devices or other technology.
The rest of C++
- Smart pointers, reference counting semantics, using with STL.
Understand differences between unique_ptr (cannot be copied, but can
move ownership to another), shared_ptr (reference counting),
weak_ptr (using to break cycles and why this is needed)
- Subclasses, inheritance, virtual functions, dynamic vs static
dispatch (function calls), vtables, constructors and destructors in
subclasses
- Pure virtual functions and abstract classes (what they are, how it works)
- Using class heirarchies with STL and smart pointers,
value vs pointer semantics, assignment slicing
- C++ casts
Network Programming
- Basic concepts of network layers: physical, data link, IP, TCP,
application
- Packets, and packet encapsulation across layers
- IP addresses, address families (IPv4 and IPv6), DNS, ports
- Stream sockets, file descriptors, read, write, close
- Client steps: address resolution, create socket, connect socket
to server, read/write (including retrys), close
- Server steps: determine address and port, create socket, bind
socket to address/port, listen (and how the OS queues pending
connections and data), accept connection, read/write, close
- Very basic HTTP and HTML (e.g., understand data sent and
received by something like the HW4 web server)
Concurrency
- Use of concurrency to improve throughput and resource
utilization
- Multiple processes and fork() (review of CSE351 mostly), shared
resources including file descriptors and close() in forked processes
- Threads - concurrent execution inside a single process; know
some pthread basics (i.e., what it means to create a thread
and start execution in a function; passing arguments to threads);
basic issues involving sharing data between threads and
locking.