Schedule
Reload this page, it is frequently updated.
- Questions? Come to office hours or use Piazza. If you wish to email instructors only (e.g., grading questions), send email to 330instructors@cs.uoregon.edu.
- Assignment solutions on ix-dev, in ~norris/public/cis330 (not a web page).
- Lecture and lab codes: https://bitbucket.org/brnorris03/cis330w19
- Scores:
- Current assignment: Projects
Week 1 [1/7]
Topics: Introduction to Unix, Revision Control, C.
Homework:
- Start Assignment 1, due Wed, 1/16 11:59pm (Note: Try to complete problems 1-3 as soon as possible.)
Reading:
- Chapter 2 (Beginner's Guide To Linux) and Chapter 4.6 (arrays and pointers) of the C and Data Structures book (Canvas)
- Connecting to ix-dev with ssh
- An Introduction to Version Control, Git in 5 Minutes
- Thinking in C Chapters 1-4
- Other (optional): Getting started with Git, Interactive Vim Tutorial, C Pointers Explained
Lab
- Lab1 agenda
Week 2 [1/14]
Topics: C (cont.), Bash
Homework:
- Complete Assignment 1, due Wed, 1/16 11:59pm;
- Start Assignment 2, due Wed 1/23 11:59pm. This is a bit harder than Assignment 1, so start early!
Reading:
- Thinking in C Chapters 5--7
- C Pointers Explained
- Valgrind Quick Start
- Bash: Chapter 2 in C Book (Canvas). Other refernces: Bash Introduction, Bash Guide for Beginners
- GCC and Make Compiling and linking C and C++ applications; A brief introduction to Makefiles
- Other (optional, but highly recommended): 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/21]
Topics: Bash (cont.), Linking, Makefiles, C++
Homework:
- Complete Assignment 2, due Wed 1/23 11:59pm;
- Start Assignment 3, due Wed 1/30 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);
- Other:
- Continue using Bash Introduction as a reference.
- A nice overview of the ELF binary format.
- Some objdump examples.
- 4 Ways a Password Could be Hacked Using Common Linux Tools
- How main() is executed on linux.
Lab:
- Lab3 Instruction.
Week 4 [1/28]
Topics: C++: Making and using objects, the C in C++, data abstraction
Homework:
- Complete Assignment 3, due Wed 1/30 11:59pm;
- Start Assignment 4, due Wed 2/6 11:59pm
- Projects proposal due Wed 2/6 11:59pm
Reading:
- Bash
- Mon: Thinking in C++, vol. 1 (TICPPv1) Chapters 1--2 (much of this should be familiar to those with OO programming experience)
- Wed: TICPPv1 Chapters 3 (The C in C++, pay special attention to "Introduction to C++ references") and 4 (Data abstraction)
Lab:
Week 5 [2/4]
Topics: C++: constants and inlined functions, introduction to operator overloading, templates and containers
- Notes and Exercises A first look at templates and containers (vectors, pairs, maps), iterators, some algorithms; a few new Unix commands.
Homework:
- Complete Assignment 4, due Wed 2/6 11:59pm;
- Complete Project proposal, due Wed 2/6 11:59pm
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)
- A very nice introduction to C++ file streams.
Other:
- Thinking in C++, Vol 2 (TICPPv2), read Chapter 4 on iostreams
Lab:
Week 6 [2/11]
Topics: C++: access control, constructors and destructors, function overloading, copy and move constructors, move semantics
- Monday: Midterm
- Wednesday: Notes and Exercises
Homework:
- Start Assignment 5, due Wed 2/20 11:59pm
- Start working on projects.
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)
Lab: Lab6
Week 7 [2/18]
Topics: C++
- Mon: Notes and Exercises; Constants and inlined functions, intro to operator overloading
- Mon (extra): Notes and exercises: A bit more bash, Sets, Lambda expressions, a preview of Smart Pointers notes, and a more detailed overview
- Wed: Notes and exercises: STL algorithms and iterators
- Hands-on exercise materials: List of words: words.zip or words.tar (from http://www.ashley-bovan.co.uk/words/partsofspeech.html) -- Google doc for sharing your creations
Homework:
- Complete Assignment 5, due Wed 2/20 11:59pm
- Start optional Assignment 6, due Fri 2/29 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/25]
Topics: C++
- Mon: Notes and exercises Operator overloading and polymorphism
- Wed:Type conversions
Homework:
- Complete optional Assignment 6, due Fri 2/29 11:59pm
Reading:
- Operator overloading, TICPPv1 Chapter 12
- Polymorphism and virtual functions, TICPPv1 Chapter 15
Lab: Lab8
Week 9 [3/4]
Topics: Polymorphism, exceptional control flow, Unix processes, signals and jumps
Homework:
- Work on project, schedule project presentations
Reading:
- Unix processes: Computer Systems Chapter 8
- Finish Chapter 8; Exception Handling,C++ exceptions tutorial
- TICPPv2 Exceptions
Lab:
Week 10 [3/11]
Topics: C++ exceptions, parallel programming, review
- Lecture notes C++ exceptions
- If time permits: Parallel programming in standard C++
- Friday: Project presentations schedule
Homework:
- Final project (presentations) due Friday 3/15, 11:59pm
Reading:
- Mon: C++ Exceptions, Introduction to Parallel Computing
- Wed: Review
- Other: Introduction to Design Patterns
Lab:
Finals week
- Final exam: TENTATIVE: 14:45 Thursday, March 21, 123 Pacific
- Final Study Guide