- Lectures
-
Section A: MW 11:15 am - 12:30 pm
Section B: MW 12:45 pm - 2:00 pm
75 Shannon St room 102 - Labs
-
Section X: F 8:40 - 9:30 am
Section Y: F 9:45 - 10:35 am
Section Z: F 11:15 am - 12:05 pm
75 Shannon St room 202 - Instructor
-
Amy Briggs
75 Shannon St room 213
802-443-2255
briggs@middlebury.edu - Office Hours
-
Tuesdays 12:20 - 1:20 pm
Wednesdays 2:00 - 3:00 pm
Thursdays 2:00 - 3:00 pm
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 x 1% = 10%
There will be 10 labs during the scheduled Friday lab periods. Lab work is due the following Monday. You are expected to attend the labs, which will often be completed in pairs. If you are unable to attend (e.g. illness or scheduled event), please email me before the lab period. -
Homeworks: 10 x 4% = 40%
Homeworks will be released on Fridays and will be due on Thursdays at 11:59 pm. -
Midterm: 20%
There will be one midterm during the 7th week of classes which will have a written and programming component. The written component will be completed during class on Wednesday 4/2. The programming component will be due on Thursday 4/3 at 11:59 pm. -
Final Exam: 25%
The Final Exam will have both a written and programming component. The written component will be completed during the scheduled Final Exam slot on Thursday 5/15, 2:00 - 5:00 in 75 Shannon 224 and 206. The programming component will be due on Thursday 5/15 at 11:59 pm. -
Participation: 5%
The participation grade will reflect your engagement in the course and will be informed by a self-evaluation at the end of the semester. You should consider whether you regularly attended class and were engaged, and collaborated with your peers during the in-class and lab exercises. Other factors may include asking questions during class, regularly meeting with a study group, frequently stopping by office hours, responding to peer questions on Campuswire, etc.
Late Policy
The following late policy applies to all assignments (homeworks and labs):
- No deduction if submitted within 24 hours of the due date (eg, homework by Friday midnight)
- 20% deduction for 2 days late (eg, homework by Saturday midnight)
- 50% deduction for 3-7 days late (eg, homework submitted late on Sunday through Thursday)
- No credit after 1 week
Extensions for extenuating circumstances such as medical emergencies must be requested before the 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.
The following open-access textbooks may also be helpful:
-
Open Data Structures (in
Java
) by Pat Morin - Think Java (2nd Edition) by Allen B. Downey and Chris Mayfield
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 run these tests locally on your computer.
Campuswire
We will communicate using the Campuswire discussion board - please join here. Use this forum to ask questions about course content of me, other course staff, and fellow students. Asking questions here gives everyone the chance to read and contribute to the Q & A. When you create a post, choose the relevant category, eg, Homework 1, from the pulldown menu in the post.
Please bring a computer to every class in order to work on the in-class exercises and labs. Please see the policy below about borrowing a laptop from the CS department.
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 can usually just skim the reading in the Bailey text.
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 to our anonymous CS departmental climate feedback 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
Honor Code
You are encouraged to discuss material from the lectures and textbook with your classmates. However, the work that you turn in must be completed independently, unless an assignment is explicitly designated as one in which collaboration is permitted. In particular, your work must not be based on information obtained from sources other than those approved for the course (i.e., materials linked from the course site). An example of an impermissible “other source” is searching online for relevant code or using generative AI for writing code. You should never copy another student’s code or solutions, exchange computer files, or share your code or solutions with anyone else. You are allowed to obtain help with your code from the drop-in help sessions. Alongside manual inspection, I may use automated tools for detecting software similarity.
Generative AI
The use of generative AI tools (such as ChatGPT, GitHub Copilot or replit's Ghostwriter, to name a few) is only allowed to assist in your own learning of theoretical concepts and may not be used in a direct manner to complete the assignments in this course. In other words, you may not use a generative AI tool to write any code for you. If you do ask one of these tools a theoretical question while working on the labs or homeworks, please include the following at the top of your code or written work: (1) cite which tool you used, (2) the prompt you entered, and (3) the response you received. The use of generative AI tools is not allowed in any way for exams.
Borrowing a Laptop
If you ever find yourself temporarily in need of a laptop, the Computer Science department has 10 rotating Dell laptops available to our students. These come pre-installed with software for most of the courses in the major. They are available to be loaned out short-term or long-term based on your need (as determined by you). Feel free to ask me ahead of time if you think you need one for just a class period, or you can send an e-mail to Smith Gakuya: sgakuya [at] middlebury.edu directly. On Long-Term Use: College policy has changed recently to include the expectation that every student have a laptop available. The college provides laptops to those who need them where “need” is based on Student Financial Services calculations. If you anticipate needing a laptop for the whole term, we encourage you to inquire with Student Financial Services and the library first due to our smaller pool of equipment. However, our department commits to meeting the needs of every student, so do not be afraid to reach out if you believe you need one of our laptops for any length of time.
Disability access/accommodation
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. Please contact one of the ADA Coordinators in the DRC at ada@middlebury.edu for more information. All discussions will remain confidential.
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 MiddSafe, 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.