Announcements
See piazza.Lecture Notes
Notes (includes the future)Videos
(Should require umd central authentication for box access)- Review of 216
- Synchronization Topics
- Sychronization Overview - The basics
- Semaphore Interface - How Semaphores can be used.
- Semaphore Implementation - How Semaphores are built (so you know what they are and don't reinvent them).
Projects
Setting up your build environment
You have many options in how to set up your build environment for 412. For your success, ensure that you can edit, build, and test via keystrokes. Your iterative development must be faster than a commit/checkout cycle, remote copy operation, reboot of a virtual machine, etc. Your beloved windows-based editor may cause you more trouble than it's worth if you cannot jump quickly locations identified by compiler errors.- Option 1: Use a Mac. It's what I use. It takes some setup to get the cross compiler working.
- Option 2: Install Linux. It could take a day. Dual boot.
- Option 3: Windows user #1, everything in the VM. Install Linux (Debian, Ubuntu) in a VM. Virtualbox works. Campus has a site license for VMWare. Use git, emacs, etc, from within the VM.
- Option 4: Windows user #2, edit outside the VM. Use Vagrant, which installs a minimal VM for virtualbox and sets up folder sharing. This can make it easier to edit from windows and commit using git tools for windows, but you'll need to, for example, 'vagrant ssh "cd /vagrant/build && make"' to compile.
Partially configured virtual machine. Get the password in class. Other linux virtual machines are possible, but this one is already configured with a patched Qemu and has the rest of the toolchain installed.
- Vagrant (all OSes) This should generally work; please comment.
- Linux (Old instructions)
- Mac (Old instructions)
- If you run Windows, your best bet is vagrant. Otherwise install Ubuntu in a virtual machine, then follow the Linux instructions.
Specifications
- Project Z, Due Sep 1
- Project 0, Due Sep 8
- Project 1, Due Sep 22
- Project 2, Due Oct 6
- Project 3, Due Oct 20
- Project 4A, Due Nov 3
- Project 4B, Due Nov 10
- Project 5B, Due Dec 1
- Project 5C, Due Dec 8