Past Schedule
Week 1 [1/5]
Topics: Introduction to Unix, Revision Control, C.
Homework:
- Start Assignment1, due Wednesday, 1/14 11:59pm (Note: Try to complete problems 1-3 as soon as possible.)
Reading:
- Unix Tutorial for Beginners
- Connecting to ix with ssh
- An Introduction to Version Control, Git in 5 Minutes
- Thinking in C Chapters 1-4
- Introduction to C arrays and C pointer basics; also see C strings: Arrays vs Pointers
- Other (optional): Getting started with Git, BitBucket 101, Interactive Vim Tutorial, C Pointers Explained
Week 2 [1/12]
Topics: C (cont.), Bash
- Notes and exercises, Quiz 1 on Blackboard (will be available Wednesday by 1700; due Friday 1/16, 11:59pm)
Homework:
- Complete Assignment1, due Wed, 1/14 11:59pm; Solutions; Scores
- Start Assignment2, due Wed 1/21 11:59pm
Reading:
- Thinking in C Chapters 5--7
- C Pointers Explained
- Bash Introduction; Additional reference (can be read selectively): Bash Guide for Beginners
- GCC and Make Compiling and linking C and C++ applications; A brief introduction to Makefiles
- Thinking in C Chapter 9b; Follow the instructions in Writing a Bash script (it's short)
- Other (optional): Introduction to ssh keys (lets you avoid typing passwords all the time). To set up ssh keys for your Bitbucket repositories, follow these instructions.
- Start reading Chapter 7 of Computer Systems: A Programmer's Perspective (CS:APP2e) chapter 7 on Linking
Lab:
- Lab2 agenda
Week 3 [1/19]
Topics: Bash (cont.), Linking, Makefiles, C++
Homework:
- Complete Assignment2, due Wed 1/21 11:59pm; Solutions; Scores
- Start Assignment3, due Wed 1/28 11:59pm
Reading:
- Finish reading CS:APP2e chapter 7 on Linking (it is long, start early!)
- Continue with linking (Ch. 7 in CS:APP2e); Chapter 9b in Thinking in C (if you haven't watched it already); Group Projects details posted.
- Other:
- Continue using Bash Introduction as a reference.
- A nice overview of the ELF binary format.
- Some objdump examples.
- How main() is executed on linux.
Lab:
- Lab3 Instruction.
Week 4 [1/26]
Topics: C++: Making and using objects, the C in C++, data abstraction
- Monday: Finish linking from Week 3, Notes
- Wednesday: Notes and exercises; Quiz 2 on Blackboard (due Friday, 1/30, 11:59pm)
Homework:
- Complete Assignment3, due Wed 1/28 11:59pm; Solutions; Scores
- Start Assignment4, due Wed 2/4 11:59pm
- Project proposal (Blackboard) due Wed 2/4 11:59pm
Reading:
- Monday: Thinking in C++, vol. 1 (TICPPv1) Chapters 1--2 (much of this should be familiar to those with OO programming experience)
- Wednesday: TICPPv1 Chapters 3 (The C in C++) and 4 (Data abstraction)
Lab:
Week 5 [2/2]
Topics: C++: access control, constructors and destructors, function overloading, copy and move constructors, move semantics
Homework:
- Complete Assignment4, due Wed 2/4 11:59pm; Solutions; Scores
- Start Assignment5, due Wed 2/11 11:59pm
Reading:
- TICPPv1 Chapter 5, Hiding the implementation (but not from your instructors)
- TICPPv1 Chapter 6, Initialization & Cleanup (just like your mom taught you)
- TICPPv1 Chapter 7, Function overloading & default arguments (no heavy lifting or heated discussions involved)
Other:
- Thinking in C++, Vol 2 (TICPPv2), read Chapter 4 on iostreams
Lab:
Week 6 [2/9]
Topics: C++: constants and inlined functions, introduction to operator overloading, templates and containers
- Mon/Wed: Notes and Exercises; Constants and inlined functions, intro to operator overloading; Quiz 3 on Blackboard (available Wed 2/11, due Friday, 2/13, 11:59pm)
- Wednesday: Notes and Exercises A first look at templates and containers (vectors, pairs, maps), iterators, some algorithms; a few new Unix commands.
Homework:
- Complete Assignment5, due Wed 2/11 11:59pm;
- Start working on projects.
Reading:
- TICPPv2, read the intro to Part II and Chapter 3 on strings and TICPPv1 Chapter 11: References & the Copy-Constructor (focus on the copy constructor)
- TICPPv1 Chapter 8, Constants and Chapter 9, Inlined functions
- TICPPv1 Chapter 12: Operator overloading (just skimming this for now is fine); TICPPv1 Chapter 16: Templates and Containers (we will continue with this next week)
Lab: Lab6
Week 7 [2/16]
Topics: C++
- Mon/Wed: Notes and exercises: A bit more bash, Sets, Lambda expressions
- Wednesday: Notes and xercises: STL algorithms and iterators
Homework:
- Start Assignment6, due Wed 2/25 11:59pm
Reading:
- Continuing with templates, containers, and iterators; TICPPv1 Chapter 16
- Generic Algorithms: only the "First look" and "Function objects" sections: TICPPv2 Chapter 6
- Continuing with containers and algorithms
- Other (these are longer materials to be used mainly as reference):
- Templates: TICPPv2 Ch. 5
- Containers:TICPPv2 Ch. 7
- Lambda expressions by example
Lab: Lab7
Week 8 [2/23]
Topics: C++
- Monday: Notes and exercises Operator overloading and polymorphism
- Wednesday after 5pm: Quiz 4 on Blackboard (due Friday, 2/27, 11:59pm)
- Wednesday: Smart Pointers, Type conversions
Homework:
- Complete Assignment6, due Wed 2/25 11:59pm
- Start optional Assignment7?, due Wed 3/4 11:59pm
- Start scheduling project presentations
Reading:
- Operator overloading, TICPPv1 Chapter 12
- Polymorphism and virtual functions, TICPPv1 Chapter 15
- Smart pointers (PDF file) (not on final)
Lab: Lab8
Week 9 [3/2]
Topics: Exceptional control flow, Unix processes, signals and jumps
Homework:
- Work on project, schedule project presentations
- Finish optional Assignment7?, due Wed 3/4 11:59pm
Reading:
- Unix processes: Computer Systems Chapter 8
- Finish Chapter 8; Exception Handling,C++ exceptions tutorial
- TICPPv2 Exceptions
Lab:
Week 10 [3/9]
Topics: C++ exceptions, parallel programming, review
- Monday: C++ exceptions
- If time permits: Parallel programming in standard C++
- Wednesday: Review
- Friday; Project presentations, Presentation Schedule
Homework:
- Final project due Wednesday 3/11, 11:59pm
Reading:
- Monday: C++ Exceptions
- Wednesday: Introduction to Parallel Computing (not on final)
- Other: Introduction to Design Patterns
Lab: