Fundamentals of Computing II

CSE 20212 - Spring 2016

All lab assignments and rubrics (Piazza)

Office hours

Prof. Scott Emrich
211B Cushing Hall; Phone: (574) 631-0353
Monday 4:30-5:30pm; Tues 2-3pm

TA Office hours: most early evenings in Eng library; see Piazza here.


This is the second part of a two-course introduction-to-computing sequence intended for Computer Science and Computer Engineering majors. This course deepens and broadens student exposure to imperative and object-oriented programming and elementary data structure usage and design. Topics covered include modularity, specification, data abstraction, classes and objects, genericity, inheritance. An accompanying laboratory will provide comprehensive programming practice to supplement course lectures.

Lectures: Mon, Wed, Fri 9:25-10:15AM, Nieuwland Science Hall 118
Labs: either Mon, Tues, or Wed (depending on section), Cushing 303

Getting Help

We will use Piazza for general questions related to our course.

If you need to ask specific questions about your programs/debugging, please place the complete code in your dropbox, copy the relevant subregion (if possible), and paste it along with the exact error message in a private post on Piazza to the instructors. Your query will be responded to by the first person available.

Course schedule (NOTE: material is no longer available via links)

Date Topic Homework Other
1/13/2016 Introductions, C++ basics prelab (PDF) Notes + Code
1/15/2016 C++ classes, constructors (Ch 3); makefiles Lab #1 (PDF) Notes + Code
1/18/2016 Intro to class design (Ch 9)   Notes + Code
1/20/2016 Deconstructors and Const (end of Ch 9, start of 10)   Notes + Code
1/22/2016 Friends, this, Static class elements (Ch 10) Lab #2 (PDF)
Notes + Code
1/25/2016 Overloading (Ch 11)   Notes + Code
1/27/2016 Overloading: arrays (part 1)   Notes + Code
1/29/2016 Overloading (polish up), Inheritance hierarchies Lab #3 (PDF)
Notes + Code
2/1/2016 Inheritance and polymorphism (Ch 12 and 13)   Notes + Code
2/3/2016 code review (battleship)   Notes + Code
2/5/2016 Battleship; intro to templates/STL Lab #4 (PDF) Notes + Code
2/8/2016 Intro to STL (cont.)   Notes + Code
2/10/2016 templating: arrays (vectors)   Notes + Code
2/12/2016 templating: linked list (list) Lab #5 (PDF) Notes + Code
2/15/2016 making a container adapter: circular list   Notes + Code
2/17/2016 Inheritance for a video game (OOP review)  
Notes + Code
2/19/2016 Midterm review Lab #6 (PDF)
Rubric in document
2/22/2016 In-class midterm    
2/24/2016 Exam followup; brief intro to software engineering   Notes (PDF)
2/26/2016 TA Panel: internship advice (optional) Lab #7 and #8 (PDF)
2/29/2016 Software engineering (in class activity)   Notes (PDF)
3/2/2016 Projects and documentation   Notes (PDF)
3/4/2016 Sample interview questions   Notes (PDF)
Midterm Break!
3/14/2016 Design patterns   Notes (PDF)
3/16/2016 Linked lists and trees   Nodes (PDF)
Code (C++)
3/18/2016 Using trees: bioinformatics Lab #9 (PDF) Notes (PDF)
3/21/2016 Guest lecture: Binary search trees   Notes (PDF)
3/23/2016 Exception handling   Example Code and notes
3/30/2016 Associative containers: maps and sets open lab this week Example Code and notes
4/1/2016 Map syntax and more examples   Notes
4/4/2016 Guest lecture: C++ 11 Lab #10 (PDF) Notes (PDF)
4/6/2016 Brief intro to BOOST    
4/8/2016 Case study: simple spell checkers   Sample code
4/11/2016 Project info; more details about BOOST   Sample code (ZIP)
4/13/2016 sorting    
4/15/2016 Parallel computing and sorting   outside activity
4/18/2016 OOP Week! (first set of groups) Project pre-release
in lab this week
4/20/2016 OOP Week! (second set)    
4/22/2016 OOP Week! (third set)    
4/25/2016 OOP Week! (last set of groups) No lab this week  
4/27/2016 Final wrap up Projects
4/29/2016 Project demos

Academic dishonesty

Entering Notre Dame you were required to study the on-line edition of the Academic Code of Honor, to pass a quiz on it, and to sign a pledge to abide by it. The full Code and a Student Guide to the Academic code of Honor are available here. Perhaps the most fundamental sentence is the beginning of section IV-B:

You are encouraged to study and discuss course material with classmates, but assessed material must derive from your head to your fingers to your text editor. In other words, no "copy and pasting" of code from group or other settings. Because any instance of academic dishonesty will be reported, please see Prof. Emrich if you are not unsure about certain actions.