Please read the syllabus here.
Please read a brief introduction to the course and course goals here.
(12/13) — One last office hour: Fri 1:00 - 2:30.
(12/10) — Project 5 due date has been extended to 12/14 11:59 PM due to a thoth server outage during last weekend. Also, an FAQ has been added --- please go over before starting.
(12/07) — Office hour change during finals week: Tue 4:00 - 5:30, Wed 1:00 - 3:00.
(12/07) — Here is a link to the Kahoot quiz. Here is a link to a text version of the quiz if you don't have (and don't need) an account. Feel free to go over it to prepare for the final.
(12/06) — Here is a SAMPLE FINAL to help you prepare for the exam. It is not cumulative and starts from Device Drivers onwards.
(11/14) — Project 4 and 5 have been released (final versions) with rubrics. Project 5 is extra credit. Now projects 1 ~ 4 are each 10% of the grade. Project 5 is an extra 6% of the grade.
(11/11) — Project 3 has been updated with an additional test case mallocdrv3 (see below). This test case just exercises individual categories in the grading rubric, so no requirements are added to the project. If you pass all 3 test cases, you do not need to submit a test case of your own.
(11/07) — There will be no recitations during Thanksgiving week (11/19 ~ 11/23). There will still be a lecture on Tuesday (11/20). Due date of Lab 6 has been delayed one week accordingly.
(11/04) — Here are the QUIZ ANSWERS. Please skim over before coming to the midterm.
(10/23) — Midterm 2 rescheduled to 11/6. During the next week recitations (starting from 10/29), we will have a QUIZ. The quiz will cover up to the end of Processes and Memory Management. Practice drawing the stack and also listing contents of relocation/symbol tables before/after linking.
(10/20) — Project 3 released due 11/13. You will do the heap lab next week during recitations (linked below) which should help you get started.
(10/20) — GDB Puzzle Lab supplementary slides had a bug in the explanation of strlen(). It has been fixed. Please skim over it and it will help greatly with project 2.
(10/07) — New instructions on increasing disk quota on your own uploaded in the Miscellaneous section.
(10/06) — Project 2 GDB puzzles have been generated under your respective /u/SysLab/ directories.
(10/04) — Project 2 released due 10/25. GDB puzzles will be generated by this weekend. Please get started on Part 1: mystrings at your earliest chance. There will also be a lab next week to help you out with solving the GDB puzzles.
(09/25) — Midterm 1 will cover up to and including Slide 12 of the File and Console I/O chapter. I will have extra office hours tomorrow (9/26) between 12:00 - 3:00 PM, if you have questions.
(09/18) — Project 1 released due 10/4. Final exam data/time update on course syllabus. Remember midterms are coming up next Thursday. Here is a SAMPLE MIDTERM to help you prepare.
(08/30) — Instructions for connecting to thoth using a Mac machine have been added to Lab 1. Also, TA contact info and office hours (including mine) have been updated in the syllabus.
(08/28) — Recitations start next week. Please work on Lab 1 at home. If you have difficulty, please get help from your TA during next week recitations and submit by the end of your recitation. There is both a file submission and a written hand-in.
(08/28) — Welcome to CS 449 Fall Term (2191)!
Lab 1: Introduction to UNIX and C (Released 8/27~8/31, Due 9/3~9/7)
Lab 2: Console I/O in C (Released 9/3~9/7, Due 9/10~9/14)
Lab 2b: Pointers and Recursion (Released 9/10~9/14, Due 9/17~9/21)
Lab GDB: GNU Debugger (Released 9/17~9/21, Attendance Taken)
Lab 3: Malloc and Free (Released 9/24~9/28, Due 10/1~10/5)
Lab Valgrind: Memcheck (Released 10/1~10/5, Due 10/8~10/12)
Lab 4: GDB Puzzle Lab (Released 10/8~10/12, Due 10/15~10/19)
Lab 5: Shared Object Lab (Released 10/15~10/19, Due 10/22~10/26)
Lab Heap: Memory Management Lab (Released 10/22~10/26, Due 10/29~11/2)
Lab Device Driver: Device Driver Lab (Released 11/5~11/9, Due 11/12~11/16)
If you have a Windows laptop and you don't have enough computing resources to run VirtualBox, please follow instructions in this link to install QEMU / Tiny.
If you get an error message from VirtualBox saying VT-x/AMD hardware accelerator support is unavailable, please follow instructions in this link to turn on support in your BIOS.
Lab 6: Network Programming Lab (Released 11/12~11/16, Due 11/26~11/30)
Please choose a port number between Ports Min and Ports Max beside your name in this spreadsheet link.
Lab Makefile: Multifile Development Lab (Released 11/26~11/30, Due 12/3~12/7)
Lab 7: Pthreads Lab (Released 12/3~12/7, Due 12/10~12/14)
Note that there are no recitations the following week, but you will submit your code before the end of the scheduled recitation time like always.
Project 1: RPG & Image Edit (Due 10/4)
RPG Example Output: rpg_output.txt
Image Converter Output: img1 invert, img2 invert, img1 grayscale, img1 grayscale (alternative), img2 grayscale, img2 grayscale (alternative)
FAQs (Updated 10/3)
Project 2: What's the Password? (Due 10/25)
Project 3: A Custom malloc() (Due 11/13)
Malloc Drivers: mallocdrv.c, mallocdrv2.c, mallocdrv3.c
Malloc Driver Outputs: mallocdrv.out, mallocdrv2.out, mallocdrv3.out
Project 4: /dev/dice Device Driver (Due 12/7)
FAQs (Updated 12/04)
Project 5: Multi-User RPG (Due 12/14)
FAQs (Updated 12/10)
Reference
C Language
Using the UNIX Shell
Using thoth.cs.pitt.edu
x86 Instruction Set
Resources