Fall 2024
-
In-person lectures on Tue & Thu 4:10-5:25pm, 417 International Affairs Building
-
Three exams:
- Exam 1 on Tuesday, Oct 15, 4:10pm
- Exam 2 on Tuesday, Nov 12, 4:10pm
- Exam 3 (final exam) on Tuesday, Dec 17, 4:20pm
There are no make-up or alternate exams.
If you cannot make any of those exams, please take the course next semester.
-
Instructor: Jae Woo Lee
-
Office hours:
Course essentials
Past Lectures
- Course overview and logistics
- Introduction to command line interface (CLI)
- CLI, Vim,
hello.c
- CLI review
- Some Vim tricks &
.vimrc
hello.c
- Makefile
- Introduction to Git
- Source code:
Recitation 2: pre-recorded |
- Lab submission process
- Quick review of Git basics
- Lab workflow and submission using Git
- C language basics (continued)
- Bitwise operators (continued)
int g(int x) { return x | (1 << 5); }
- sign extension
- Logical operators & short-circuit evaluation
- Assignment as expression
- Evaluation of
x++
- Lecture notes 03: C language basics
- Storage classes
- Storage classes (continued)
- Static variables (continued)
- Process memory address space
- Pointers
- Pointers (continued)
- Arrays
- Heap memory allocation
- Heap memory allocation (review)
- Source code:
-
Review of argv
array
-
Function pointers
struct
- Linked list
- Source code:
- Linked list (continued)
-
Macros & include guards
- Libraries (reading assignment for lab3)
- Standard I/O
- Coverage:
- Labs 1 and 2
- All lecture materials up to and including Linked list
- Sample exams
- All ANN emails
- Standard I/O (continued)
- File I/O
- Source code:
Lecture 14 is via pre-recorded video; 10/22 lecture is canceled
- File I/O (continued)
fopen()
and FILE*
revisted
- Opening files in various modes
stdin
/stdout
/stderr
are FILE*
variables
- Buffering on standard I/O
- Line buffering vs. block buffering
fflush()
- Binary file I/O
- ‘b’ mode in
fopen()
fread()
, fwrite()
, fseek()
- Lecture notes 13: File I/O
- Formatted I/O
- Source code:
- Formatted I/O (continued)
- Source code:
- Getting stated with lab 4
- Copying and renaming reference executables
- First step: reading & printing the 1st record
- Getting further with lab 4
- Reading all mdb records in a loop
- Adding mdb records into a linked list (incorrectly)
- Endianness
- Source code:
- Process management in UNIX
- Source code:
- Process management in UNIX (continued)
Review
Spawning processes with fork()
- Exit status codes and
waitpid()
- Executing programs with
exec()
- Lecture notes 15: fork()
- Source code:
- Shell scripts
- Source code:
Fall Break (no class): T 11/5 |
netcat
: TCP/IP swiss army knife
- Demo of chat session using netcat
- Remote
mdb-lookup
using netcat
./mdb-lookup-cs3157 < mypipe | nc -l 10000 > mypipe
- Users and file permissions in UNIX
- Exercise: saveints.c
- An exercise that combines file I/O, linked list, and endianness
- Coverage is technically cumulative, but will focus on post-Exam 1 materials:
- Labs 3 and 4
- Lectures up to and including Lecture 16 (T 10/29)
- Sample exams
- All ANN emails
Recitation 6: pre-recorded |
- Getting started with Lab 5
- Users and file permissions in UNIX (continued)
- How the Internet works
- Sockets API
- Source code:
Upcoming Lectures & Exams
- Sockets API (continued)
- Source code:
Assignments
- HW0 Part A due Tue 9/3
- HW0 Part B due Thu 9/5
- Lab1 due Sun 9/22
- Lab2 due Mon 10/7
- Exam 1 on Tuesday, 10/15, 4:10pm
- Lab3 due
Mon 10/21 Tue 10/22
- Lab4 due
Thu 10/31 Fri 11/1
- Exam 2 on Tuesday, 11/12, 4:10pm
- Lab5 due Tue 11/19
- Tentative: Lab6 due Tue 11/26
- Tentative: Lab7 due Tue 12/10
- Exam 3 (final exam) on Tuesday, Dec 17, 4:20pm
Last updated: 2024-11-16