3/5/17 The seating chart for Midterm 2 can be found here.
2/11/17 We have uploaded copies of two old 264 exams to help you study for Tuesday's midterm: (i) Spring 2016. Please ignore Q3, as it covers material that will not be on this midterm. (ii) Fall 2016. Please ignore Q3 and Q4, as they cover material that will not be on this midterm.
2/3/17 Next week will have a modified class schedule for Section 3 only. Class on Monday (2/6) will be canceled as a makeup for evening midterm 1. Class on Wednesday (2/8) will feature a guest lecture by Professor Lu.
1/11/17 We updated some of the starting files for PA02. If you already set up your PA02 repository, please update it using the instructions at the top of the PA02 page.
1/9/17 There is a configuration issue with the git installation on ECN machines, which can make it tricky to clone your repository. Please see the supplemental instructions for a couple of workarounds.
1/3/17 Webpage live!
This course focuses on the principles and practice of programming in C. We will cover the topics needed to become knowledgable C programmers, and concepts that can be transferred to many other languages. Topics include:
- Tools for programming (make, gdb, git)
- Data types and structures
- Pointers and memory allocation
- Induction and recursion
- Dynamic data structures (lists and trees)
The course syllabus covers most of the details of the course, including a tentative schedule, exam dates, etc. Assignment links will be distributed via Blackboard announcements and emails, and grades will be posted on Blackboard. We will be using Piazza for online discussion of the lectures and assignments. If you have a question about a concept covered in lecture or about a detail of an assignment, check Piazza first!
Lecture Schedule and Notes (for Section 3)
- Week 1:
- Week 2:
- 1/18 Program layout in memory. (See notes from 1/13)
- 1/20 Data types and structs Notes
- Week 3:
- Week 4:
- Week 5:
- 2/6 Lecture canceled (makeup for midterm 1)
- 2/8 Intro to recursion (guest lecture by Professor Lu)
- 2/10 Recursion and gdb. Notes
- Week 6:
- Week 7:
- Week 8:
- 2/27 Analyzing runtime of recursive programs. Notes coming soon.
- 3/1 Linked Lists (I). Notes
- 3/3 Linked Lists (II). See notes from 3/1.
- Week 8:
- 3/6 Midterm 2 review
- 3/8 Linked Lists (III). See notes from 3/1.
- 3/10 Linked Lists (IV). See notes from 3/1.
- Week 9:
- 3/20 Shallow vs. Deep copy, Stacks, Queues
- 3/22 Queues, Binary Trees (I)
- 3/24 Binary Trees (II) BSTs
- PA01: Tools. Due 1/17
- PA02: Program Stack. Due 1/20
- PA03: Structs. Due 1/27
- PA04: Files and Function Pointers. Due 2/3
- PA05: Files and Memory Allocation. Due 2/10
- PA06: Merge Sort. Due 2/17
- PA07: 2D Arrays. Due 2/24
- PA08: Depth-first Search. Due 3/3
- PA09: Linked Lists (I). Due 3/10
- PA10: Linked Lists (II). Due 3/24
- PA11: Stacks. Due 3/31