skip to content

ECE 2400 - Computer Systems Programming
Spring 2017

MoWeFr 11:15am-12:05pm (room TBD)

[Home | References | Piazza | CMS]

SCHEDULE (subject to change)

Part I: Basics

1/23 (Winter break)
1/25 Introduction to UNIX, C, and C++
1/27 Writing a simple C program
Discussion (None)
Transition to C (Rec. reading: [K][R])
1/30 Variables, expressions, and functions 2-2.3
2/1 Control flow 2.4-2.6
2/3 Basic data types; typecasting 3-3.6
Discussion Basics A-A.8; C-C.1
2/6 Pointer basics; the heap 8-8.7
2/8 Arrays and strings 9-9.6
2/10 Uses of pointers; memory management 10-10.4; 12-12.2
Discussion Debugger: gdb C.2
Basic algorithmic techniques (Rec. reading: [S])
2/13 Computational cost 20-20.1; notes
2/15 Recursive algorithms 7-7.6
2/17 Divide-and-conquer Notes
Discussion Memory checker: memcheck C.3
2/20 (February break)
2/22 Dynamic programming Notes
2/24 Other programming techniques Notes
Discussion (None)
Sorting (Rec. reading: [S])
2/27 N-squared sorting 26-26.1; notes
3/1 N-log-N sorting 26.2-26.3; notes
3/3 N-log-N sorting (cont'd'); N sorting 26.2-26.3; notes
Discussion Profiler: gprof Notes
Basic data structures in C (Rec. reading: [S])
3/6 Lists Notes
3/8 Stack and FIFO ADTs Notes
3/10 Set and Map ADTs Notes
Discussion Prelim 1 prep

Part II: Data Structures and Object-oriented Programming

Transition to C++ (Rec. reading: [LLM])
3/13 Transition to C++ 14-14.6
3/15 Transition to C++ (cont'd) 14-14.6
3/17 Object creation and destruction 15-15.4
Discussion Managing projects: gmake Notes
3/20 Object creation and destruction (cont'd) 15-15.4
3/22 Templates 17-17.4
3/24 Inheritance and polymorphism 18-18.8
Discussion Prelim 1 solution
Data structures (Rec. reading: [We])
3/27 Binary search trees 22-22.5
3/29 Binary search trees (cont'd) 22-22.5
3/31 Priority queues 24-24.3
Discussion Revision control: git C.4
4/3-7 (Spring break)
4/10 Hashing 23-23.4
4/12 Graphs 25-25.5
4/14 Graphs (cont'd) Notes
Discussion Prelim 2 prep
4/17 Spanning trees 25.4

Part III: Concurrent Programming with UNIX

UNIX environment (Rec. reading: [SR])
4/19 The process environment 11-11.2
4/21 The process environment (cont'd) 11-11.2
Discussion Case study TBD
4/24 Standard I/O 11.3
Concurrency with POSIX threads (Rec. reading: [SR])
4/26 Processes and POSIX threads 28-28.2
4/28 POSIX threads (cont'd) 28.2
Discussion Prelim 2 solution
5/1 Concurrency 28.2
5/3 Synchronization 28.3
5/5 Synchronization (cont'd) 28.3
Discussion Case study TBD

Part IV: Advanced Topics

5/8 C++11: Multithreading [Wi]
5/10 C++11: Type inference and lambda functions [LLM]
Discussion (None)


Required textbook

[HB] A. Hilton and A. Bracy. All of Programming. Ed. 0, 2015

Recommended textbooks

[K] K.N. King. C Programming: A Modern Approach. W.W. Norton & Co., 2nd Ed., 2008

[R] R. Reese. Understanding and Using C Pointers. O'Reilly Media, 1st Ed., 2013

[S] R. Sedgewick. Algorithms in C, Parts 1-4. Addison-Wesley, 3rd Ed., 1998

[LLM] S.B. Lippman, J. Lajoie, and B.E. Moo. C++ Primer. Addison-Wesley, 5th Ed., 2013

[We] M. Weiss. Data Structures and Algorithm Analysis in C++. Pearson, 4th Ed., 2013

[SR] W.R. Stevens and S.A. Rago. Advanced Programming in the UNIX Environment. Addison-Wesley, 1st Ed., 2013

[Wi] A. Williams. C++ Concurrency in Action: Practical Multithreading. Manning Publications, 1st Ed., 2012