The prerequisite for this course is Introduction to Computer Science.
This course provides an introduction to the fundamental data structures of computer science: strings, lists, stacks, queues, trees, BSTs, graphs, sets and their accompanying algorithms. Principles of algorithmic analysis and object reasoning and design will be introduced using mathematical techniques for the notions of both complexity and correctness. We will also cover practical issues such as memory management and hashing. The programming language used to illustrate and implement these concepts will be able to support functional, imperative and object-oriented approaches. There are several course objectives beyond mastery of the course material:
The language for this course is Java.
WEEK | DAY | ANNOUNCEMENTS | TOPIC & READING | LABS |
1 | Jan 21 | Introduction
Reading:
| Tues: Thurs: Lab 0: Java intro | |
Jan 23 | ||||
2 | Jan 28 | Registration ends (Jan 29) | Intro to Object Oriented Programming
Reading:
| Tues: Thurs: Lab 1: Data design |
Jan 30 | ||||
3 | Feb 04 | Object Oriented Programming (cont)
Reading:
| Tues: Thurs: Lab 1 (cont) | |
Feb 06 | ||||
4 | Feb 11 | Linked Lists
Reading:
| Tues: Thurs: | |
Feb 13 | ||||
5 | Feb 18 | Time Complexity
Reading:
| Tues: Thurs: Lab 3: Linked Lists | |
Feb 20 | ||||
6 | Feb 25 | Stacks and Queues
Reading:
| Tues: Thurs: Lab 3 (cont) | |
Feb 27 | Last day to pass/fail (Feb 28) | |||
7 | Mar 03 | Review and Midterm
Reading:
| Tues: Midterm 1 (in-class) | |
Mar 05 | ||||
Mar 10 | Spring Break | |||
Mar 12 | ||||
8 | Mar 17 | Lists, iterators, interfaces, and graphs
Reading:
| Tues: Thurs: Lab 4: Stacks and Queues | |
Mar 19 | ||||
9 | Mar 24 | Binary Trees
Reading:
| Tues: Thurs: Lab 5: Binary Trees | |
Mar 26 | ||||
10 | Mar 31 | Priority Queues
Reading:
| Tues: Thurs: Lab 6: Heaps | |
Apr 02 | ||||
11 | Apr 07 | Maps and Hash Tables
Reading:
| Tues: Thurs: Lab 6 (cont) | |
Apr 09 | ||||
12 | Apr 14 | Sorting and selection
Reading:
| Tues: Thurs: Lab 7: Deduplication | |
Apr 16 | ||||
13 | Apr 21 | Search trees and union-find
Reading:
| Tues: Thurs: Tues: Midterm 2 (take-home) Final Project: Project Options | |
Apr 23 | ||||
14 | Apr 28 | Review and Midterm
Reading
| ||
Apr 30 |
45% | Lab assignments |
40% | Midterms (20% each) |
10% | Final Project |
5% | Participation |
There will be occasional reading quizzes. These are graded largely on completion, not correctness. Reading quizzes count toward participation. If you have made a solid attempt at the reading and show up for class, you will likely receive full credit.
There will be two midterms, each during class (see Schedule). Let me know as soon as possible if you have a conflict with one of the exams. In lieu of a final exam, there will be a final project. You must pass at least one exam to pass the course overall.
Weekly Lab Sessions | ||
Lab A 9:30—10:30am Friday | Lindell | H110 |
Lab B 10:30—11:30am Friday | Lindell | H110 |
Lab B 11:30—12:30pm Friday | Lindell | H110 |
Handing in labs: Lab assignments are submitted electronically and managed using git. You may submit your assignment multiple times, but each submission overwrites the previous one and only the final submission will be graded. Some of the programming/lab assignments may be in pairs. There may also be some written assignments that will have specific instructions for handing in.
For extensions beyond these 2 late days (in the case of an emergency or ongoing personal issue), please contact your Class Dean. The three of us will work together to arrange an appropriate accommodation.
From the faculty:
"In a community that thrives on relationships between students and faculty that are based on trust and respect, it is crucial that students understand a professor's expectations and what it means to do academic work with integrity. Plagiarism and cheating, even if unintentional, undermine the values of the Honor Code and the ability of all students to benefit from the academic freedom and relationships of trust the Code facilitates. Plagiarism is using someone else's work or ideas and presenting them as your own without attribution. Plagiarism can also occur in more subtle forms, such as inadequate paraphrasing, failure to cite another person's idea even if not directly quoted, failure to attribute the synthesis of various sources in a review article to that author, or accidental incorporation of another's words into your own paper as a result of careless note-taking. Cheating is another form of academic dishonesty, and it includes not only copying, but also inappropriate collaboration, exceeding the time allowed, and discussion of the form, content, or degree of difficulty of an exam. Please be conscientious about your work, and check with me if anything is unclear."
Please also note the CS Department Collaboration Policy.
More details for this course:
Under no circumstances may you hand in work done with (or by) someone else under your own name. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. This includes, but is not limited to, obtaining solutions from students who previously took the course or code that can be found online. You may not share solutions after the due date of the assignment.
Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.
This semester we’ll be using Piazza, an online Q&A forum for class discussion, help with labs, clarifications, and announcements. You should have received an email invitation to join CMSC H106 on Piazza. If you didn't, please let me know.
Piazza is meant for questions outside of regular meeting times such as office hours, class, and lab. Please do not hesitate to ask and answer questions on Piazza, but keep in mind the following guidelines:
"Haverford College is committed to providing equal access to students with a disability. If you have (or think you have) a learning difference or disability – including mental health, medical, or physical impairment - please contact the Office of Access and Disability Services (ADS) at hc-ads@haverford.edu. The Coordinator will confidentially discuss the process to establish reasonable accommodations.
Students who have already been approved to receive academic accommodations and want to use their accommodations in this course should share their verification letter with me and also make arrangements to meet with me as soon as possible to discuss their specific accommodations. Please note that accommodations are not retroactive and require advance notice to implement.
It is a state law in Pennsylvania that individuals must be given advance notice if they are to be recorded. Therefore, any student who has a disability-related need to audio record this class must first be approved for this accommodation from the Coordinator of Access and Disability Services and then must speak with me. Other class members will need to be aware that this class may be recorded."