Computer Science 135 :: Diving into the Deluge of Data

We are surrounded by information: weather forecasts, twitter feeds, restaurant reviews, stock market tickers, music recommendations, among others. 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, social networks, scientific computing, databases, and the World Wide Web. Programming topics covered include object-oriented and functional programming, control structures, types, recursion, arrays, lists, streams, and dictionaries. This course is appropriate for all students who want to create software and learn computational techniques for manipulating and analyzing data.

Particulars

  • Professor: Brent Heeringa
  • Email: heeringa [at] cs [dot] williams [dot] edu
  • Office: Thompson Chemistry Laboratory 306
  • Phone: 413.597.4711
  • Course Classroom: Thompson Chemistry Laboratory (TCL) 206
  • Lecture Time: MWF - 09.00-09.50
  • Lab Time: Th - 13.00-14.20; 14.30-16.00
  • Office Hours: M 10.00-12.00; Tu 11.00-12.00
  • Teaching Assistants: Derrick Bonafilia, Devin Gardella, Victoria Jasuta
  • Teaching Assistants' Office Hours:
    • Devin: Mondays 19.00-21.30
    • Derrick: Tuesdays 19.00-21.00
    • Tori: Tuesdays 20.30-23.00

Honor Code

Please read the honor code for computer science classes.

Grading

  • 10 labs, each worth 5% of your grade, lowest grade dropped.
  • 6 homework assignments, each worth 2% of your grade, lowest grade dropped.
  • 1 final project, worth 20% of your grade.
  • 1 take-home midterm, worth 20% of your grade.
  • An overall participation score, worth 5% of your grade.

Tools

Readings

Lectures

Lecture 1 :: 06 February 2015


  • Topics: Overview of Diving into the Deluge of Data
  • Goals: explore and experience computer science and problem solving; describe course structure
  • Readings:
  • Notes
  • Slides

Lecture 2 :: 09 February 2015


  • Topics: operating systems, unix, bash, and compiled versus interpretted languages
  • Goals: gain a rudimentary understanding of the operating system, filesystem, shell, programming languages, and the REPL
  • Readings:
    • Chapter 1 of Think Python.
    • A Unix tutorial. Write down questions and bring them to the first lab. The tutorial is probably best read in front of a computer equipped with a unix operating system (like OS X or Linux). To launch a shell on OS X, look for the Terminal application in /Applications/Utilities.
    • Bash on Wikipedia
    • How does a computer program work?
  • Notes
  • Slides

Lecture 3 :: 11 February 2015


  • Topics: the python interpreter, variables, numbers, strings, and representation
  • Goals: understand variable declaration and assignment, integers, reals, and complex numbers, mathematical operations on different numeric types, strings and basic string manipulation
  • Readings:
  • Additional Readings and Information:
  • Notes
  • Slides

Lecture 4 :: 13 February 2015


  • Topics: conditionals, functions, scope, namespaces, modules, pseudocode
  • Goals: understand function declaration, parameters and arguments; learn about Python modules and packages; use pseudocode to describe language-independent ideas
  • Readings:
  • Additional Readings and Information:
  • Notes
  • Slides

Homework

  • Homework 0 :: Assigned: 09.00 - 06 February 2015 :: Due: 12.00 08 February 2015
  • Homework 1 :: Assigned: 09.00 - 25 February 2015 :: Due: 23.00 06 March 2015
  • Homework 2 :: Assigned: 09.00 - 06 March 2015 :: Due: 23.00 13 March 2015
  • Homework 3 :: Assigned: 09.00 - 13 March 2015 :: Due: 23.00 20 March 2015
  • Homework 4 :: Assigned: 09.00 - 24 April 2015 :: Due: 23.00 01 May 2015
  • Homework 5 :: Assigned: 09.00 - 01 May 2015 :: Due: 23.00 08 May 2015
  • Homework 6 :: Assigned: 09.00 - 08 May 2015 :: Due: 23.00 15 May 2015

Credits