Course Syllabus
When and Where | TuTh 11:15AM - 12:05PM in MBH 220 |
Instructor | Jason Grant 75 SHS 218 802-443-5787 jgrant@middlebury.edu |
Office Hours |
M: 2:00PM - 3:15PM |
Additional Help |
Robert Lichenstein, ASI Evening Tutoring |
Description:
This course stresses ideas and structures helpful in designing and implementing algorithms, especially for solving large or complex problems. Important concepts in this context are data abstraction and modularity, which should be familiar from your first CS course. In this course, we will introduce many important data structures such as vectors, lists, stacks, queues, trees, and graphs, and discuss various ways to implement these structures. We will also cover in depth the concept of algorithmic complexity, and compare the different implementations terms of time and space efficiency. The course will also introduce object-oriented programming using the programming language Java; however, the main focus will be on data structures, not on the new language.
Prerequisites: CSCI 101 or 150 or 190; or AP CS; or permission of the instructor.
Free online Textbooks:
Required: Java Structures, √7 edition [pdf], Duane A. Bailey, 2007
Supplemental: Thinking in Java (html) [non-frames version], Bruce Eckel, 2003
Coursework
40% | Homework |
30% | Midterm Exams |
20% | Final Exam |
10% | Lab Assignments and Class Participation |
Weekly homework and labs
Assignments will typically go out on Friday morning and be due the following Thursday before midnight. Late homework will be penalized 10% if one day late; no homework will be accepted after 24 hours with the exception of extenuating circumstances. If you have not completed an assignment, you should still turn in whatever you have for partial credit. In extenuating circumstances (e.g., sickness, personal crisis, family problems, religious holidays), you may request an additional extension. Such extensions are more likely to be granted if the request is made before the due date.
Lab sessions will meet on Wednesday afternoon. Each lab session will cover a course-related, supplemental topic of Data Structures or the Java language. There may be short Pre-lab reading assigned on Thursday, and an online quiz to be taken before labs meet on Friday. Lab assignments are designed such that most can complete the minimum requirements during lab time. Labs will be due on Wednesday evenings at midnight after the lab.
Attendance
You are expected to attend class and lab. We will cover a lot of material each day and will not regurgitate material from the textbook(s). Samples and examples used in class will be posted online, but you may find it difficult to replicate the class experience solely from the material posted online.
Getting help
We’ll use Canvas for discussions outside of class. Rather than emailing questions to the instructor or the tutors, we encourage you to first post the questions to Canvas. This will allow other students to answer questions and to benefit from the answers you receive. This system will only work if you use it, so please do so. Please do not post entire programs/function/classes on Canvas.
It is our experience that students often hesitate to post questions publicly online for fear of appearing "dumb" in view of their peers. However, we strongly encourage each of you NOT to think this way. More often than not, a large portion of the class shares your exact question, but are all too afraid to ask it, as well. Perhaps some of your classmates had the exact same question earlier, figured something out, and could give you a hint. Additionally, you may find that the act of simply typing out a coherent question makes you realize something about your problem and you answer it yourself. The important takeaway, though, is that everyone here is trying to learn; failure and confusion are part of the process!
Learning Accommodations
Students with documented disabilities who believe that they may need accommodations in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. Assistance is available to eligible students through Student Accessibility Services. Please contact Jodi Litchfield or Courtney Cioffredi, the ADA Coordinators, for more information: Courtney Cioffredi can be reached at ccioffredi@middlebury.edu or 802-443-2169 and Jodi Litchfield can be reached at litchfie@middlebury.edu or 802-443-5936. All discussions will remain confidential.
Inclusive Learning
Middlebury College supports an inclusive learning environment where diversity and individual differences are understood, respected, appreciated, and recognized as a source of strength. It is expected that students in this class will respect differences and demonstrate diligence in understanding how other people’s perspectives, behaviors, and world views may be different from their own.
Honor Code
Students are expected to uphold the Honor Code (Links to an external site.) outlined by Middlebury College, and should have a good understanding of what constitutes as cheating or plagiarism. For a refresher, please review Middlebury's Writing and Plagiarism Guides.
When working on your final project, it is perfectly reasonable to consult public literature and other resources. However, you must reference any source that you draw on for your project. You may incorporate code from other sources as long as you give proper credit and abide by any licensing terms (e.g. including a copyright notice).
If you are ever unsure about how the Honor Code applies, please ask!
N.B. Dates in the Course Summary are tentative and subject to change, but will closely approximate the schedule of the semester.
Date | Topics | Suggested Reading |
9/9 | Logistics and Review | |
9/11 | Data Types and Operations | Language Basics |
9/13 | Classes | OOP Programming Concepts, Bailey 1.2 - 1.4 |
9/16 | Classes Pt. 2 | OOP Programming Concepts, Bailey 1.2 - 1.4 |
9/18 | Arrays (Handout) | Arrays |
9/20 | Complexity | |
9/23 | Recursion (Handout) | Ch. 5.2.1 |
9/25 | Vectors | Ch. 3 |
9/27 | Vectors Pt.2 | |
9/29 | Encapsulation | Ch. 1.1 |
10/2 | Sorting | Ch. 6-6.4 |
10/4 | Sorting Pt. 2 | Ch. 6-6.4 |
10/7 | Midterm 1 Review | |
10/9 | Inheritance | Subclasses |
10/11 | Inheritance Pt. 2 | Bailey Ch. 1-1.4 |
10/14 | Interfaces | Ch. 7 |
10/16 | Lists (Single-Linked Lists) | Ch. 9-9.4 |
10/18 | Single-Linked Lists Pt.2 Insertion/Deletion | |
10/21 | *** No class - Mid-term Recess*** | |
10/23 | Double-Linked Lists (Handout) | Ch. 9.5-9.6 |
10/25 | List Operations | |
10/28 | Queues (Handout) | |
10/30 | Stacks (Handout) | Ch. 10 |
11/1 | Priority Queues | Ch. 13-13.3 |
11/4 | Trees | Ch. 12 |
11/6 | Binary Trees (Handout) | Ch. 14-14.4 |
11/8 | Splay Trees | |
11/11 | Mid-term 2 Review | |
11/13 | Splay Trees Pt. 2 (Handout) | 13.4-13.4.2 |
11/15 | Red-Black Trees (In-Class Example) | |
11/18 | Heaps | |
11/20 | Hashing | |
11/22 | Hash tables | Ch. 15 |
11/25 | Graphs | Ch. 16-16.3 |
11/27 | *** No class - Thanksgiving Recess*** | |
11/29 | *** No class - Thanksgiving Recess*** | |
12/2 | Graphs Pt.2 (BFS,DFS) | |
12/4 | Graphs Pt. 3 (BFS,DFS) (Handout) | |
12/6 | Graphs (Shortest Path) (Handout) |
Course Summary:
Date | Details | Due |
---|---|---|