CSCI 134 Syllabus

Logistics

Instructors Bill Jannen, Shikha Singh
Technical Support Lida Doret
Webpage & Email https://cs.williams.edu/~cs134, cs134staff@williams.edu
Lectures MWF 9:00-9:50am (Bill)
MWF 10:00-10:50am (Shikha)
MWF 11:00-11:50am (Shikha)
Labs Mon 1:00-2:30pm (Bill & Shikha), Mon 2:30-4:00pm (Shikha)
Tues 1:00-2:30pm (Shikha), Tues 2:30-4:00pm (Bill & Shikha)
Classroom Schow 030A (Lectures), TCL 216/217A (Labs)
Python Resources Optional: Allen Downey’s Think Python, 2ed, an online textbook.
Python documentation: https://www.python.org/doc/.

Course Description

We are surrounded by information. This course introduces fundamental computational concepts for representing and manipulating data. Using the programming language Python, this course explores effective ways to organize and transform information in order to solve problems. Students will learn to design algorithms to search, sort, and manipulate data in application areas like text and image processing, scientific computing, and databases. Programming topics covered include procedural, object-oriented, and functional programming, control structures, structural self-reference, arrays, lists, streams, dictionaries, and data abstraction. This course is appropriate for all students who want to create software and learn computational techniques for manipulating and analyzing data.

Topics (subject to change)

Week Lab Mon Wed Fri
Feb 2 - - - Welcome & Course Info
Feb 5 Hello Word Expressions Conditionals No class (Winter Carnival)
Feb 12 Moon Age Functions Strings Iteration
Feb 19 Madlibs Lists Range While loops
Feb 26 Voting P1 Nested loops & Files List Comprehension Modules
Mar 4 Voting P2 Mutability Sets Tuples
Mar 11 Debugging Dictionaries Sorting & Plotting No class (Midterm)
Mar 18 Spring Break - - -
Mar 25 Spring Break - - -
Apr 1 Baby Names Dictionaries Recursion Graphical Recursion
Apr 8 Recursion vs Iterations Classes I Classes II
Apr 15 Auto-complete Inheritance Tic-Tac-Toe Tic-Tac-Toe
Apr 22 Boggle P1 Linked List Searching Sorting
Apr 29 Boggle P2 Efficiency Java I Java II
May 6 Java Java III OOP Review Wrap Up

Organization

We will meet three times each week for lecture, and once a week for lab. During lecture hours we will learn new concepts and problem solving strategies. During the 90-minute lab section, we will gain hands-on experience with the concepts through programming assignments.

Grading

Final grades will be determined according to the following:

Each of these items are explained in detail in the following sections.

Programming Assignments and Pre-labs

Each week students will be assigned a lab project. Labs will be posted every Friday. They are due:

Pre-labs are short “paper and pencil” assignments meant to get you started thinking about the lab before you come in, and are due in lab itself. These are graded pass/fail and constitute 5% of your lab grade.

Labs will be graded on a letter scale (A-F). A grade-sheet will be distributed with the lab each week that includes specific details about expectations.

Homework

Each week students will be assigned homework on Glow. Homework assignments will be posted every Wednesday and are due on Monday at 10pm. Homework will be used to test comprehension on important course concepts and help students prepare for the exams. We will drop your lowest homework score from your final grade.

Late Policy

Students are expected to turn in all assignments by the due date to receive full credit. Please contact your instructors as soon as possible if you cannot meet a deadline.

Exams

The midterm exam will be on the evening of Thursday, March 14. The final will be scheduled during the final exam period. The exams will be closed book, closed notes, and will test conceptual understanding of the material. Details regarding the specific format of the exams will be discussed in class.

Workload Expectations

Attendance is required in both lecture and lab. In general, beyond the 4 hours we spend together during our class and lab meetings, students should expect to spend (on average) approximately 10 hours per week on work related to class. Aside from the weekly lab and homework assignments, students are responsible for reading supporting material, and investigating online resources (documentation, tutorials) as necessary.

Community

We embrace diversity. We welcome all students and expect everyone to contribute and support a respectful and welcoming environment. If you have concerns, please share them with us or the college administration.

Honor Code

For programming assignments in computer science courses, the honor code is interpreted in very specific ways. Unless otherwise indicated, labs are expected to be the work of the individual student, designed and coded by them alone. Help locating errors and interpreting error messages is allowed, but, if you are taking photos of someone else’s screen, or telling someone else what to type, it is likely the work is no longer the work of an individual student. The following are all considered violations of the Honor Code: (a) giving your solution to other students, (b) submitting another person’s solution as your own, or (c) using another person’s solution as the starting point for your solution.

One of the major goals of this course is to learn how to write code. Therefore, you should avoid using artificial intelligence tools (like ChatGPT or GitHub Copilot) to assist you with labs or other assignments. Any use of generative AI technology is considered a violation of the Honor Code.

If you do not understand how the Honor Code applies to a particular assignment, consult your instructor. Students should be aware of the Computer Ethics outlined in the Student Handbook. Violations (including uninvited access to private information and malicious tampering with or theft of computer equipment or software) are subject to disciplinary action.

The College and Department also have computer usage policies that apply to courses that make use of computers. Read more about these policies here.

Intellectual Property

As per College policy, no part of this course may be reproduced and/or distributed. In particular, no videos recorded as part of this class may be shared with anyone external to the CS134 course.

Accommodations

If formal accommodations need to be made to meet your specific learning or physical abilities, you should contact your instructors as soon as possible to discuss appropriate accommodations. You should also contact the Office of Accessible Education. We will work together to ensure this class is accessible and inclusive.

Personal Health

If you are experiencing mental or physical health challenges that are significantly affecting your academic work, you are encouraged to contact your instructor and/or reach out to the Dean’s Office (x4171).

Public Health

To keep our classroom and lab environments as healthy as possible, use common-sense measures such as wearing a mask if you have minor cold-like symptoms. If you have fever or feel ill, please do not come to class or lab and inform the course staff of your absence. We will work with you to make sure you can make up any missed work, and to develop a plan that allows you to continue making progress in the course as you recover from your illness.

Lab Grading

Programming labs will be graded on the following scale:

Grade Description
A A flawless submission that meets all the requirements and gets the job done in a particularly elegant way.
A- A submission that satisfies almost all the requirements—a job well done.
B+ Submission meets the major requirements for the assignment with a few minor issues.
B A submission that has problems serious enough to fall short of the requirements for the assignment.
C A submission that has extremely serious problems, but nonetheless shows some effort & understanding.
D A submission that shows little effort and does not represent passing work.

Getting Help

The course staff and TAs will hold weekly help hours for all students. To get the most up-to-date help hour schedule, add the CSCI 134 Calendar to your Google Calendar.

  1. Staff Help Hours: Bill, Shikha, and Lida will hold weekly help hours for all students in TCL 216 (Side lab).

  2. TA Help Hours: CSCI 134 TAs hold weekly help hours in TCL 217A/216. See CSCI 134 Calendar.

  3. Tutoring: Free tutoring is available for any student enrolled in this course through the office of Content Tutoring. You are welcome to schedule an individual tutoring session or visit the Math and Science Resource Center (the MSRC) for help. The MSRC is for drop-in tutoring where you can ask tutors a quick question, collaborate with people in your class, or just get some work done among others. One note: tutors for this class will only be available in the MSRC on particular weeknights. To find the MSRC schedule or make an appointment with an individual tutor, please visit Accudemia. If you have any questions about finding a tutor, please contact Madison Kelsey.

Acknowledgements

Many individuals, including Jeannie Albrecht, Duane Bailey, Rohit Bhattacharya, Lida Doret, Molly Feldman, Stephen Freund, Mark Hopkins, Iris Howley, Kelly Shaw, Shikha Singh, Bill Jannen, and Brent Heeringa have contributed to the materials for this course.