Table of Contents

Syllabus (Fall 2019)

If you have any questions not addressed in this syllabus, don’t hesitate to ask in person or electronically!

Course Details

Tentative Schedule

For ease of reading and updating, this exists as a separate document: Schedule.

Office Hours

  • My office is in Ford Hall 252. Note that this location has changed if you knew where I was last year!
  • Mondays 1:30-3pm, Wednesdays 10am-12pm and Thursdays 2-4pm. (updated 16 Sept. 2019)
  • Always by appointment if I can! Get in touch: jjfoley@smith.edu

TA Hours

The departmental TA page is here: http://www.cs.smith.edu/TAs.php. Feel free to ask on Piazza about TA hour changes.

The department provides TA support. Every TA has taken Data Structures in the past. Although I am doing some things differently, I expect that everyone in the class will be able to learn something from the TAs – they are all fantastic older Smithies who are happy to discuss the assignments and the material with you – during their hours.

Lecture: (Stoddard G2) Tuesdays & Thursdays 10:50am-12:05pm

Lecture is an important part of the course. I will do my best to make the lecture interesting and interactive. I apologize in advance if I’m hungry after lecture.

Lab: (Ford Hall 342) Fridays 1:20-3:10pm or 3:20-5:10pm

Lab is a designated time for hands-on exercises. I hope to give time during each of the labs for you to work on your assignments with my supervision, but we will additionally have short exercises.

Accessibility

This course is intended to be accessible to all students. If you have questions or requests for accommodations, feel free to reach out to me or the Office of Disability Services. For accomodation letters you can email me or deliver them to my office hours so we can construct a plan together. Please let me know as soon as possible how I can best support your learning.

Identity

In order that all forms of self-identity can be honored, students who prefer specific pronouns are encouraged to inform the instructor. I have created a Google Form to get to know you all better.

Computer / Workspace Access

This course will be hands-on, and if anyone is unsure of where or how they will complete their assignments, they are encouraged to contact the instructor. Smith College has resources for students in need of computers including labs, rentals and grants (e.g., money). The instructor would be quite happy to help a student looking for a quiet place or a laptop to do the assignments.

About this Course

CSC212 serves many purposes: an second course in programming (focusing on larger challenges), an introduction to data structures and algorithms, and an introduction to the Java Programming language.

Prerequisites

Normally, students are required to take CSC111 before taking this course. Students who have taken a prior CS1 course or have other circumstances are encouraged to consult the instructor. Many comparisons to Python programming will be made in the beginning of this course (while learning Java). This will be less helpful for you if you’ve not taken a course with python, but don’t hesitate to ask clarification questions if you don’t understand references :)

Course Challenges

This is a programming-intensive course that has a reputation for being one of the most difficult Computer Science courses at Smith. Everyone can be successful in this course, but everything we learn will build on itself, particularly our knowledge of Java as the course progresses. Don’t hesitate to bring questions to me or the TAs early in the course (even if you’re not sure what your question is!)

Please plan to work a little on this course every day. Think about the assignments and the material, and discuss them with your classmates. It is normal to have questions and to feel overwhelmed in the beginning of this course. If you start working early, we will have time to help you be successful in your assignments and your understanding of the material.

Course Outlook

In CSC111, you studied programming and computer concepts with Python. In this course, we will introduce a more explicit and more powerful language that will enable us to write more complex programs with more safety. Java is widely used in industry for interviews and real products – many web pages you interact with (e.g., Google) are written partially or fully in Java.

We will continue honing our skills as Computer Scientists as we observe and study “phenomena” in Computer Science. By studying data structures, we study the tools humans have developed based on the nature of computers and data. This is a programming intensive course so that we can merge our learning of Java and our learning of Data Structures to better prepare you for future CS classes and your careers.

Course Outline

I organize the CSC212 into two distinct parts: learning about data structures in an abstract way, and studying implementations in a hands-on way. We will have a Part 1, the first third or so of the class, followed by a midterm exam, and then a longer Part 2, followed by the final exam.

Part 1: Abstract Data Structures & Java

In the first part, we will get up to speed with Java and introduce abstract data types – which are much like how we used lists and variables in python – we know how they behave but we don’t know how they work. Java separates this nicely. We will also introduce a theoretical topic: how do we know a program is faster than another program? How do we know if a program will ever finish?

  • Java and Object Oriented Programming
  • Abstract Data Types
  • Basic Complexity (or which program is faster? why? how?)

Part 2: Data Structure Implementation

In the second part of this course, we will look at concrete implementations of the data types we’ve introduced in the first part and more real-world use-cases for each.

  • Lists, Grids, and Memory
  • Pointers, References, Linked Lists and Graphs
  • Recursion & Stacks
  • Sorting and Complexity Theory Revisited
  • Association, Trees and Hashmaps

Grading Overview

Your course grade will be a weighted average of your projects (the assignments), your exams, and the final project. I am always happy to discuss feedback and grading with you.

  • Projects (Assignments) 55%
  • Exams (Midterm & Final) 25%
  • Final Project 20%

If you believe something has been marked in error or you do not understand why a certain grade was given, please talk to the instructor during office hours or an appointment. I will be happy to explain my thinking and/or correct my mistake!

Attendance Policy

I will schedule content in lectures and labs to best support your work in CSC212, and I will track attendance (likely via a sign-in sheet). However, attendance holds no official part of the grading policy. I encourage you to visit my office hours or consult with your classmates if you have questions reviewing any material you have missed.

Assignment Schedule

Assignments will be assigned during or before lab on Fridays, and due the following Friday at midnight. Since we have labs on Friday, this means that we can often use the labs as an introduction and support for the new assignments. This also means that it will be in your best interest to wrap up assignments as though they were due on Thursday nights – pretend that you have a “free extension” until Friday for small questions.

Extension Policy

Since we have weekly assignments and every assignment is important, there are no extensions in this class. A one day extension means that the next assignment must be completed in six days. It is in the student’s best interest to submit partial assignments on time rather than any assignments late.

Extensions will be given in extenuating circumstances, but only after a conversation and discussion with me. In such circumstances, I strongly suggest students contact the Dean of Students’ office so that they may take advantage of Smith’s support resources.

Students with accommodations through the Office of Disability Services are encouraged to contact me so we can work out a plan together. See Accessibility.

Academic Honesty & Collaboration Policy

Smith College expects all students to be honest and committed to the principles of academic and intellectual integrity in their preparation and submission of course work and examinations. All submitted work of any kind must be the original work of the student who must cite all the sources used in its preparation.

Smith Honor Code, Student Handbook, retrieved from https://www.smith.edu/sao/handbook/socialconduct/honorcode.php.

Students are encouraged to discuss assignments in groups, to discuss error messages, to “Google” questions together and in general to pursue becoming better Computer Scientists as a community. Students are not allowed to write code together without the explicit permission of the instructor. Working together without permission or using code without properly sourcing it will result in a report to the honor board.