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
++x
and 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
sizeof
operator - 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 1
logistics
- 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
ANN
emails
- 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
ANN
emails
- 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
ANN
emails
- 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