CSE 333 Su12 Final (e.g., 2nd midterm) Topics

This list summarizes topics we've covered since the midterm. The final exam will be biased towards these items but may include anything we've done this quarter, so you should take another look at 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. A good way to study is to work some of the practice exercises at the end of most lectures if you haven't done them already.

The rest of C++

  • Templates - template parameters for classes and functions, what happens when the compile generates an instance of a template
  • STL, containers and iterators. You're not expected to know picky details, but you should be able to use basic containers (vector, list, map) and iterators.
  • Smart pointers, reference counting semantics, using with STL. Understand differences between auto_ptr (transfers ownership), shared_ptr (reference counting), scoped_ptr (no copy or assignment, manages memory only), 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)
  • Using class heirarchies with STL and smart pointers, assignment slicing, value vs pointer semantics
  • C++ casts

Network Programming

  • Basic network layers: physical, IP, TCP, application
  • Packets, and packet encapsulation across layers
  • IP addresses, address families (IPv4 and IPv6), DNS, ports
  • Stream sockets, file descriptors, read, write
  • 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), accept connection, read/write, close
  • Very basic HTTP and HTML (e.g., understand data sent and received by something like HW4 web server)

Concurrency

  • Multiple processes and fork() (mostly CSE351 review), shared file descriptors and close() in forked processes
  • Threads - concurrent execution inside a single process; know a few of the pthread basics (i.e., what it means to create a thread and start execution in a function)
  • Use of concurrency to improve throughput and resource utilization
  • Non-blocking I/O and select - basic concepts

You should understand the ideas behind the core concepts and how to use them, but don't memorize API details. We'll provide hints on the exam for API details as needed, but you should know the basics (e.g., how to use a map).