Goals and Values#

Learning Goals#

By the end of this course, students will be able to:

  • Reason about data structures: Reason about the benefits and tradeoffs of using a collection of data structures based on their structure and the desired goal.

  • Implement the data structures: Write code that converts abstract descriptions of common data structures (and their associated operations) into working implementations.

  • Use data structures to solve problems: Write programs that use implementations of data structures to accomplish intended goals.

  • Analyze algorithmic complexity: Characterize and contrast operations on data structures and common algorithms by reasoning about their time and space complexity.

  • Develop programming proficiency: Develop ability to independently identify and resolve errors (logical, compiler, runtime), decode the syntax of a new programming language, search for appropriate resources to solve problems, and learn object-oriented programming concepts.

Scheduled Topics#

  • Introduction to Java

    • Syntax

    • Typing

    • Generics

    • Compilation

  • Review of object-oriented programming (OOP) concepts

    • Classes

    • Methods

    • Objects

  • New object-oriented programming concepts

    • Inheritance

    • Interfaces

    • Abstract classes

  • Fundamental data structures

    • Arrays

    • Lists, Linked Lists

    • Stacks, Queues

    • Binary trees, Binary Search Trees

    • Heaps, Priority Queues

    • Hash Maps

  • Programming methods, programming complexity

    • Algorithmic analysis (Big O)

    • Recursion

    • Searching

    • Sorting

You matter in this course#

Mount Holyoke College and this course embrace a notion of intellectual community that fundamentally depends on diversity along a number of dimensions, including race, ethnicity and national origins, gender and gender identity, sexuality, class, and religion. We all have a shared responsibility to cultivate a climate where everyone in this course is valued and where both they and their ideas are treated with respect. Each voice in the classroom has something of value to contribute and your suggestions for cultivating this environment are highly encouraged.

Your success in this class is important to me. If there are aspects of this course that prevent you from learning or exclude you, please let me know as soon as possible. Together we’ll develop strategies to meet both your needs and the requirements of the course.

Names and pronouns#

Everyone has the right to be addressed by the name and pronouns that they use for themselves. You may indicate your preferred name and pronouns in my.mtholyoke, which appear on class rosters. Please let me know what name and pronouns we should use for you if they are not on the roster or if they change during the course of the semester. If I or your peers happen to slip up, please give a gentle reminder. Every student’s name and pronouns are to be respected at all times.

Mental health#

Your mental health takes first priority above your academics. If you are feeling overwhelmed, or find yourself facing mental health challenges, please come talk to me. As an instructor and academic, I have had to work through my own share of mental health challenges. I am more than happy to find the support you need on campus – I am always here to help!

How to succeed in this course#

Attend both lecture and lab and be an active participant. The course assignments out-of-class will intertwine with the material we cover in lecture and lab. The assigned material is thus not a replacement for class. We expect you to attend both lecture and lab – unless you have an extenuating circumstance – and engage with me and your peers through the lecture material and in-class activities. Active participation also extends to our Ed Discussion board, which is where we will post announcements and where you can ask questions as well as get help from your peers.

Come to office hours and TA hours – it is an expected and normal part of the learning process. Office hours are an opportunity for you to take ownership of your own learning experience – to ask questions that will help you better understand the material, and to connect it topics you are personally interested in. We expect to see you at office hours regularly, engaging with the material, clarifying any gaps in your understanding, and supporting your peers.

Embrace uncertainty for growth. This course exercises a diverse skillset, as we will be introducing ways to think computationally along with learning a new programming language. You along with your peers bring a diverse set of experiences and perspectives. You may find that certain aspects of the course come naturally to you, while others are more challenging. Uncertainty may be uncomfortable, but it is also a natural part of the learning process and an opportunity for you to grow your own skills and understanding. Our goal is to help you embrace this uncertainty productively and harness it for your own learning.

How to get support#

The best way to get help is to come to office hours or TA hours. If you are unable to make it to office hours, please reach out to the instructor of your lecture section so we can schedule another time to talk.

We also encourage you to work with your peers in a study or accountability group to learn from each other and share ideas. Refer to the Collaboration Policy to see what forms of collaboration are allowed for individual assignments.

Most importantly, learning computer science requires persistence and resilience – the ability to ride ups and downs. It can take a lot of confidence and bravery to ask a question, but we have found that students who get connected with their instructors, TAs, or peers end up most successful.

Tip

Ask for help early and often! Reach out on Ed, ask your peers, form a study group, or stop by during office and TAhours.