COMS W3157 Advanced Programming
Fall 2021
- TR 4:10pm-5:25pm, 417 International Affairs Building - 
- SEC 001 vs. SEC H01: no real difference
- Lectures will be recorded and uploaded to CourseWorks
- CourseWorks open to Columbia first few weeks – search on Vergil
 
- Three synchronous exams for both SEC 001 and SEC H01 - 
- Thu 10/21, 4:10pm: Midterm exam #1
- Thu 11/18, 4:10pm: Midterm exam #2
- Tue 12/21, 4:20pm: Final exam
 - Probably online but possibly in-person (TBD) - All students in both SEC 001 and SEC H01 MUST take the exams at those times.
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
Supplementary materials
- Supplements to Jae’s Git tutorial:
- Supplements to Sockets and HTTP lectures:
- Notes and videos by TAs
Syllabus
Unit 1: C programming basics
- UNIX CLI basics
- Compiling & linking
- Makefile
- Git
- Binary number
- Data types
- Expressions & statements
- Storage class
- Process address space
Unit 2: Pointers and arrays
- Pointers
- Arrays
- Pointers vs. arrays
Unit 3: Function pointers and structs
- Function pointers
- Struct
- Linked list
Unit 4: File I/O
- Standard I/O
- Redirection
- File I/O
Unit 5: UNIX processes, shell, TCP/IP
- UNIX overview
- Creating processes using fork & exec
- Introduction to TCP/IP networking
Unit 6: Sockets API and HTTP
- Endianness
- Sockets API
- HTTP 1.0
Unit 7: Web-based software architecture
- HTTP 1.0 vs. HTTP 1.1
- 3-tier architecture
Past Lectures
- Course overview and logistics
- Compiling & linking
- Lecture note 01
- main.c,- myadd.c,- myadd.h- 
- Compiling & linking, a two-step process
- Function declarations
- #include <stdio.h> - how this is NOT including library code
- Independent compilation of .o files
- Using header file to prevent linking problem
 
 
- Makefile - 01
- Integer data types - 02
- Binary numbers - 02
Note that 01 and 02 refer to Lecture note 01
and Lecture note 02.
Class was canceled; watch the following video segments.
09_12_2019, 01:08:35-01:18:50
- 0x7FFFFFFF, 0x80000000, 0xFFFFFFFF
- Integer literals
- Differences between 0,'\0', and'0'
 
09_17_2019, 00:03:50-1:08:33
- Expressions & statements - 02
- Assignment as expression
- ++xand- x++
- Comparison and loginal operators
- Bitwise operators
- Picking out (i+1)th right-most bit
- Turning on (i+1)th right-most bit
- Turning off (i+1)th right-most bit
 
- loops
 
- Include guards - 01
- Lab workflow and submission process
- Pointer types - 04
- NULL pointer - 04
- Array basics - 05
- sizeofoperator - 05
- Grand Unified Theory (GUT) of arrays and pointers - 05
- Heap memory allocation - 05
- Char arrays
- Strings literals
- strcpy(),- strncpy(),- strcat(),- strncat()
- Argv array
- How to approach lab 2 part 2
- const keyword - 07
- pointer to function - 07
- complex decl - 07
- lectnote07.c
- Exam 1logistics
- complex decl (continued)
- struct - 07
- linked list in C - 07
- linked list in C (continued)
- Lab3 linked list
- two differences: (1) void *data(2)struct List
 
- Standard I/O, redirection, pipelines - 09
- Exam 1, covering:- 
- Labs 1 and 2
- Lectures up to and including linked list
- Lecture notes up to and including 07
 
- All ANNemails
- Textbook sections on the topics covered in the lectures
 
- File I/O API in C - 09
- Buffering on standard I/O - 09
- Binary file I/O - 09
- Lab 4 overview & demo
- Numeric IDs in UNIX - 11
- User ID, Group ID, Process ID, Port number
 
- fork & exec
- How processes are created in UNIX
- How shell programs work
 
- Sockets API: simple echo client & server example
- Exam 2- 
- Coverage:
- Labs 1, 2, 3, 4, 5
- Lectures up to and including 11/9
- All ANNemails
- Textbook sections on the topics covered in the lectures
 
 
- Sockets API: file sender & receiver example
- Lab 7 demo
- HTTP 1.0 vs HTTP 1.1
- Dynamic web page
- 3-tier architecture
 
Class cancelled
- Shell Scripting by Kent John Hall (TA)
- Compiled executable vs. shebang script vs. sourced script
- Shell language features
- Variables
- Comparators
- Control flow
- Functions
- Trap handlers
- Command substitution
 
 
Upcoming Lectures & Exams
- Exam 3(aka Final Exam)- 
- Coverage:
- Labs 1, 2, 3, 4, 5, 6, 7
- Lectures up to and including 12/2
- All ANNemails
- Textbook sections on the topics covered in the lectures
 
 
Assignments & Exams
- HW0 Part A due Thu 9/9
- HW0 Part B due Sun 9/12
- Lab 1 due Fri 10/1
- Lab 2 due Tue 10/12
- Midterm exam #1: Thu 10/21, 4:10pm
- Lab 3 due Tue 10/26
- Lab 4 due Fri 11/5
- Lab 5 due Fri 11/12
- Midterm exam #2: Thu 11/18, 4:10pm
- Lab 6 due Fri 12/3
- Lab 7 due Mon 12/13
- Final exam: Tue 12/21, 4:20pm