Week |
Tuesday |
Thursday |
0
|
|
Sep 26
|
Lecture 1: Introduction
|
- Course administration, set up, Linux server
- Review of simple C programs
|
|
|
1
|
Oct 1
|
Lecture 2: Review of basic types and operators
|
- Lexical tokens, keywords, identifiers
- Basic types, constants, operators
- Formatted input, output
|
|
Oct 3
|
Lecture 3: Review of control-flow statements
|
- Sequential execution, compound statements
- Conditional execution, if/switch statements
- Repeated execution, loop statements
|
|
2
|
Oct 8
|
Lecture 4: Review of arrays
|
- Arrays, multidimensional arrays
- Passing arrays to functions
- Application example PhotoLab
|
|
Oct 10
|
Lecture 5: Review of functions
|
- Function declaration, definition, call
- Hierarchy of functions, function call graph, stack, trace
- Long jump, recursion
|
|
3
|
Oct 15
|
Lecture 6: Scope, Storage Classes
|
- Scope, variable lifetimes
- Memory organization, segmentation
- Storage classes
|
|
Oct 17
|
Lecture 7: Compiler components, translation units
|
- Preprocessor, compiler, linker
- Modules, translation units, shared libraries
- Application examples PhotoLab2, PhotoLab3
|
|
4
|
Oct 22
|
Lecture 8: Make and Makefile
|
- Make, Makefile
- Rules, targets and dependencies
- Advanced features
|
|
Oct 24
|
Lecture 9: Assertions and debugging
|
- Using and disabling assertions
- Source level debugger GDB
- Data display debugger DDD
|
|
5
|
Oct 29
|
Lecture 10: Review
|
- Syntax and semantics of C programs
- Types, expressions, statements, functions, recursion
- Modules, Makefile, debugging, programming
|
|
Oct 31
|
Midterm Exam: Programming in C
|
- Syntax and semantics of C programs
- Types, expressions, statements, functions, recursion
- Modules, Makefile, debugging, programming
|
|
6
|
Nov 5
|
Lecture 11: Data structures
|
- Course administration: midterm exam, review
- Course administration: midterm course evaluation
- Structures, unions, enumerators, bit fields, typedefs
|
|
Nov 7
|
Lecture 12: Dynamic data structures
|
- Objects in memory, size of objects, pointers
- Dynamic data structures
- Dynamic memory allocation, malloc() and free()
|
|
7
|
Nov 12
|
Lecture 13: Dynamic data structures
|
- Pointer operations, arithmetic, comparison
- Pointer-array equivalence, linear address space
- Validating dynamic memory accesses, valgrind
|
|
Nov 14
|
Lecture 14: Dynamic data structures
|
- Linked lists
- Double-linked list
- Example: List of student records
|
|
8
|
Nov 19
|
Lecture 15: Dynamic data structures
|
- Double-linked list
- Element insertion, deletion
- Example: List of student records
|
|
Nov 21
|
Lecture 16: Dynamic data structures
|
- Pointers to functions
- Sorted double-linked list
- Example: List of student records
|
|
9
|
Nov 26
|
Lecture 17: Command line tools and file I/O
|
- Command line arguments argc, argv
- File processing, I/O streams
- Example: Tool to sort student records
|
|
Nov 28
|
Holiday: Thanksgiving
|
|
10
|
Dec 3
|
Lecture 18: Advanced C programming
|
- Type conversion, types in expressions, type qualifiers
- Passing data to/from functions, variable argument lists
- String operations, standard library functions
|
|
Dec 5
|
Lecture 19: Advanced C programming, Review
|
- Course wrap up
- Outlook to EECS 22L
- Review quiz
|
|
Final
|
Dec 10
|
Final Exam:
|
10:30am - 12:30pm
|
|
|