Data Structures

CSE 20312 - Spring 2017

View website in full window

All lab assignments and rubrics (Piazza)

Skip to most recent lecture notes

Team DS


Scott Emrich
Lead instructor
semrich@nd.edu

Shreya Kumar
Lab instructor
skumar5

Ryan Busk
Senior
rbusk

Luke Garrison
Senior
lgarriso

John Rocha
Senior
jrocha

Rosalyn Tan
Senior
rtan

Jenna Wilson
Senior
jwilso27

Mary Connolly
Senior
mconnol6

Teddy Brombach
Junior
tbrombac

Cameron Smick
Junior
csmick

Emily Obaditch
Junior
eodaditch

John Joyce
Junior
jjoyce6

Lauren Ferrara
Junior
lferrara

Nick Aiello
Junior
naiello

Robert Simari
Junior
rsimari

Troy Prince
Junior
tprince

James Farrington
Junior
jfarrin1

Office hours

Prof. Scott Emrich
211B Cushing Hall; Phone: (574) 631-0353
TBD

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

Overview

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, Debartolo 141
Labs: either Mon, Tues, or Wed (depending on section), Fitzpatrick B011

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.

Other resources


Complete course schedule

Date Topic Homework Other
1/18/2017 Introductions; (re)intro C++ class design, makefiles   Notes + Code
1/20/2017 Constructors, deconstructors, passing by value vs. reference Lab #1 (inc. rubric) Notes + Code
1/23/2017 const, static, review of overloading   Notes + Code
1/25/2017 Making our own vector sequence container   Notes + Code
1/27/2017 Intro to inheritance Lab #2 (see Piazza for rubric) Notes + Code
1/30/2017 Polymorphism   Notes + Code
2/1/2017 intro to templates, array example   Notes + Code
2/3/2017 code review: battleship Lab #3 (see Piazza for rubric) Notes + Code
Inheritance version
2/6/2017 template deep dive: linked lists (1)   Notes + Code
2/8/2017 template deep dive: linked lists (2)   PDF (last fall)
2/10/2017 making a container adapter: queue + circular list Lab #4 (inc. rubric) PDF
2/13/2017 Stacks   Code
PDF
2/15/2017 Intro to binary trees and priority queues   PDF
2/17/2017 Binary search trees   PDF
2/20/2017 Simple tree traversals and deconstruction   Code from class
2/22/2017 Review: adding on a binary tree, projects  
Code
2/24/2017 Collaborative midterm review Lab #5 (inc. rubric)  
2/27/2017 In-class midterm    
3/1/2017 Exam followup; brief intro to software engineering   PDF
3/3/2017 Runtime analysis Lab #6 (see Piazza for rubric)  
3/6/2017 Comparison-based sorting   PDF
3/8/2017 Recursive sorting   PDF
3/10/2017 Sample interview questions    
Midterm Break!
3/20/2017 Heaps and heap sort Lab #7 (see doc for rubric) PDF
3/22/2017 Intro to balancing search trees    
3/24/2017 Red-black trees (1) Lab #8 released  
3/27/2017 Red-black trees (2)    
3/29/2017 Treaps    
3/31/2017 Hash tables Lab #9 released  
4/3/2017 Separate Chaining    
4/5/2017 Hash functions and open addressing    
4/7/2017 Intro to graphs Lab #10 released  
4/10/2017 Storing a graph in C++    
4/12/2017 Graph traversals    
Easter
4/19/2017 Minimum spanning trees    
4/21/2017 Associative containers: maps and sets    
4/24/2017 OOP Week! (first set of groups) Project pre-release
in lab this week
 
4/26/2017 OOP Week! (second set)    
4/28/2017 OOP Week! (third set)    
5/1/2017 OOP Week! (last set of groups) No lab this week  
5/3/2017 Final wrap up Projects
due
 
5/5/2017 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.