- Week 1: Introduction (T), Java Control Structures (R), Lab 1 (F)
- Week 2: Arrays (T), Objects (R), Lab 2 (F)
- Week 3: Polymorphism (T), Java Collections (R), Lab 3 (F)
- Week 4: Complexity (T), Sorting I (R), Lab 4 (F)
- Week 5: Recursion (T), Sorting II (R)
- Week 6: Linked Lists I (T), Midterm I (7PM MBH 220) (R), Optional Office Hours (F)
- Week 7: Linked Lists II (T), Stacks and Queues (R), Lab 5 (F)
- Week 8: Trees (T), Heaps, Priority Queues (R), Lab 6 (F)
- Week 9: Binary Search Trees (T), Balanced Trees (R), Lab 7 (F)
- Week 10: Hash Tables I (T), Midterm II (7PM MBH 220) (R), Optional Office Hours (F)
- Week 11: Hash Tables II (T), Graphs (R), Lab 8 (F)
- Week 12: BFS and DFS (T), Graph Algorithms (R), Lab 9 (F)
- Week 13: Wrap-up and Review (M)
Syllabus
Lectures
Section A: TR 9:45 am - 11:00 am
Section B: TR 11:15 am - 12:30 pm
75 Shannon St room 224
Labs
Section Y: F 9:45 - 10:35 am
Section Z: F 11:15 am - 12:05 pm
75 Shannon St room 102
Instructor
Laura Biester
75 Shannon St room 214
lbiester@middlebury.edu
Office Hours
Tuesdays 3:00 - 4:00 pm
Wednesdays 3:00 - 4:00 pm
Thursdays 4:00 - 5:00 pm
Appointments
Schedule a 20-minute one-on-one appointment
These appointments are available to talk about course material if you are unable to attend office hours during a given week. Please book at least 12 hours in advance.1
Course Description
In this course we will study the ideas and structures helpful in designing algorithms and writing programs for solving large, complex problems. The Java
programming language and object-oriented paradigm are introduced in the context of important abstract data types (ADTs) such as stacks, queues, trees, and graphs. We will study efficient implementations of these ADTs, and learn classic algorithms to manipulate these structures for tasks such as sorting and searching. Prior programming experience is expected, but prior familiarity with the Java
programming language is not assumed.
Objectives
By the end of the course, students will be able to:
- Write programs that efficiently implement and use data structures such as arrays, maps, linked lists, stacks, queues, trees, and graphs.
- Design, develop, debug, and test a
Java
program that uses appropriate standard libraries to efficiently solve a problem. - Evaluate the time and space complexity of algorithms using empirical and mathematical analysis.
Coursework and Grading
- Labs: 10%
There will be approximately 10 labs during the scheduled Friday lab periods. Lab work is due the following Tuesday. You are expected to attend the labs, which will often be completed in pairs. - Homeworks: 20%
Homeworks will typically be released Thursdays and due the next Thursday (1 week later) at 5:00 pm. - Midterm: 2 x 15% = 30%
There will be two midterms on Thursday evenings, one during the 6th week of classes and one during the 11th week of classes. Both will be written, on-paper exams. - Programming Exam: 2 x 5% = 10%
The programming exam will be a one-on-one in-person programming exam. You will complete the first programming exam by week 6, and the second programming exam by week 10. - Final Exam: 20%
The Final Exam will be a written, on-paper exam. The written component will be completed during the scheduled Final Exam slot (date/time TBD). - Participation: 10%
The participation grade will reflect your engagement in the course and will be informed primarily by attending and being engaged during class/lab. Your participation grade will also be informed by completion of the introduction survey, homework reflection surveys, and a participation survey at the end of the semester. See more about participation grades here.
Attendance, Late Assignments, and Revisions
I will take attendance during class and lab periods; you will be given 5 free passes at the start of the semester, which can be exchanged for:
- Missing a class period
- Missing a lab period
- Resubmitting a homework assignment with revisions after grades have been released (within two weeks of the initial deadline). Revisions may only be submitted if you made progress towards passing the Gradescope tests by the deadline, and must be accompanied by a revision reflection.
I will keep track of free passes, and they will be applied automatically in each of the situations above whenever they occur.2 You may earn up to 3 additional free passes by coming to my office hours3 and asking questions about course content or assignments.
Additionally, homework assignments may be submitted late within 24 hours of the due date (e.g., by Friday at 5PM) for no deduction to your grade without using a free pass. Extensions for extenuating circumstances such as medical emergencies must be requested before the Thursday due date.
Resources
Textbooks
Lectures will reference materials from Java
Structures (\(\sqrt{7}\) Edition) by Duane Bailey (2007). The Reading column in the calendar corresponds to the sections in Bailey’s Java
Structures unless otherwise noted.
Java Resources
VS Code
We will use Visual Studio (VS) Code to do all of our development work in this course. Please see the Setup page for more information about installing VS Code along with certain extensions.
Gradescope
Labs and Homeworks will usually be submitted on Gradescope. Gradescope will be used to automatically test your submissions while also checking the style of your code. We will also discuss how to test your code locally on your computer.
Expectations
You are expected to attend each class and participate in discussions and group work. Be curious! We cover foundational material in this course; it will be important to keep up with class attendance, labs, and homework assignments. Read the lecture notes and slides carefully. You should expect to spend up to 8 hours per week on work outside of class to be successful in this course. If you find that you are regularly spending more time than 8 hours per week on the class, send me an email or stop by office hours to chat. You can usually just skim the reading in the Bailey text.
Laptops
You are expected to bring a charged laptop to all class sessions. If you don’t have access to a laptop (even if for just a single class period), please contact me to ask about the availability of the department’s loaner laptops. The CS Department maintains a set of loaner laptops, preinstalled with relevant course tools, for both short-term and longer-term use. Given the small number of machines available (approximately 10), if you anticipate needing a laptop for a longer period (e.g., the entire semester or more), I encourage you to also inquire with the library about loaner equipment and/or Elaine Orozco Hammond about an Student Access and Support Grant, which can help you to purchase a laptop. Our department commits to meeting the needs of every student, so please don’t hesitate to contact Smith (our laboratory instructor) if you need a computer (in any way) for this course.
Learning Community
We encourage an open exchange of ideas and questions in all interactions throughout the course. Our goal is to help each of you develop your own understanding of the material, and we recognize that each of you has your own journey. So we encourage you to ask lots of questions (and there is no such thing as a dumb question about the material in this course!) and be supportive of your classmates on their journey as well. Maintaining an inclusive and positive learning environment where all have a sense of belonging is an important priority and shared responsibility.
If you experience or witness any behavior that opposes this idea, it would be helpful for me to know so that I can address it. If you feel comfortable, you can report such incidents in the following ways:
- talk to or email me
- report the incident on our anonymous CS departmental climate form
- fill out a Bias Incident Report which goes to the Middlebury Community Bias Response Team.
You belong in this class and in the computer science department. Thank you for being here and for contributing to this course.
Policies
Resources Available to You
We have many resources that can make the learning process easier throughout the course:
- Professor Office Hours: My office hours are a great place to ask questions! You can ask questions about your homework, the lecture, the CS major, CS research, working in tech… even your general experience at Midd!
- Course Assistant Drop-In Hours: We have course assistants who will also be available to help students with their coursework. Their schedule will be available early in the semester.
- ASI Drop-In Hours: Smith (our Laboratory Instructor) is available to help during his drop-in hours. See his hours on his personal website.
- CampusWire Message Board: Ask questions about course content and assignments on the CampusWire message board. Asking questions here allows your classmates to see answers to frequently asked questions. Do not share code for any assignments publicly on the message board.
- Email: If you have a question that cannot be asked on a public message board, please send an email to lbiester@middlebury.edu. I will commit to responding to emails from students within 1 business day; I will not respond to emails on the weekend.
Honor Code and Generative AI
You are encouraged to discuss material from the lectures and textbook with your classmates. Additionally, you are encouraged to discuss your overall approach with your classmates on homework/lab assignments. However, these assignments are one of the primary ways that you will learn the material in this course. If you copy another student’s code/solutions or share your code/solutions with anyone else, you are harming the learning process for yourself and/or your classmate.
Similarly, the use of generative AI tools (such as ChatGPT, Copilot, Claude, to name a few) is only suggested to assist in your learning of theoretical concepts and should not be used in a direct manner to complete the assignments in this course. If an AI tool is used to generate code for you or answer other questions on assignments more generally in this course, you are harming your ability to learn the material. Programming requires significant trial-and-error; if you are frustrated, I suggest seeking out other opportunities for help (my office hours, CA drop-in hours, CampusWire) rather than turning to generative AI tools, which are not designed to help you learn from the assignment.
On homework assignments, you are expected to report who you collaborated with on the assignment and how you collaborated, as well as how you used AI tools (if at all) on the assignments. A full citation should be provided for any use of AI, including (1) the tool you used, (2) the prompt you entered, and (3) the lines of code that the tool assisted you with.
All exams must be completed independently and use of AI is strictly forbidden. This includes the use of AI tools to generate any note sheets that are permitted during an exam. Your answers on exams are intended to be a way for me to gauge what you have learned in the class. If your answers do not align with content in the course materials, I reserve the right to withhold credit for those questions or schedule a follow-up meeting to discuss your answers.
Disability Access and Accommodation
Every class is made up of learners with different access needs. My goal is for each student in our class to succeed, and to create an accessible learning environment for everyone. Students who have Letters of Accommodation 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.
For those without Letters of Accommodation, assistance is available to eligible students through the Disability Resource Center (formerly called Student Accessibility Services). All discussions will remain confidential.
Please contact one of the ADA Coordinators at ada@middlebury.edu for more information.
Title IX
As faculty members and members of the Middlebury community, we are committed to the safety of all students. If we learn of any potential violation of our Policy Against Sexual Misconduct, Domestic and Dating Violence and Misconduct, and Stalking SMDVS Policy or our Anti-Harassment/Discrimination Policy, we are required to notify a member of Middlebury’s Title IX team. This ensures that students receive timely care and information about their rights, their choices, and available resources for support. Students who would like to speak with a confidential resource who does not have an obligation to report can contact the Patron Center for Health and Wellness, WomenSafe (serving individuals of all gender identities), or campus and local clergy and medical professionals. For more information, see go/sexualviolenceinfo.
Tentative Schedule and Topics
Footnotes
Please talk to me beforehand if you need to schedule more than one meeting per week!↩︎
These free passes are intended to be used for extenuating circumstances like illness, sports games, etc., and are expected to be saved for these situations. If you find that you have extenuating circumstances that require absences beyond what is allowed by this policy, please contact me once you have no remaining free passes.↩︎
Make sure to sign in if you want to earn a free pass↩︎