>> SPRING 2013 | [ SCHEDULE ] | [ PDF ] | [ SVN ] | [ wiki ]
Instructor: Andrew Cencini (
Credits: 4
Meeting Time: M/Th 10:10am - 12:00pm; W 2:10pm - 6:00pm
Location: Dickinson Computer Science Lab (Dickinson 235)
Office Hours: M 2:10pm - 6:00pm, Dickinson 211
Course Web Site:

Some computer scientists are considered "dangerous" because they are able to solve difficult problems quickly and efficiently. In this class, students will undergo an intensive introduction to the field of computer science; this introduction will include learning to command Unix-based operating systems (Linux, MacOS), essential programming skills (Python), computational thinking, and fundamental principles of computer science such as algorithm design, recursion, searching, sorting, and basic data structures. Students will become conversant in the various areas of computer science, and will learn the lore, history, and current problems of the discipline.


  • Ananda Brutvan
  • Peter Clapper
  • Caseysimone Cooper
  • Abraham Edelman
  • Evan Gall
  • Torrent Glenn
  • Christian Gould
  • Will Jackson
  • Mackenzie Katz
  • Ruby Lavin
  • Jonah Lipsky
  • Sierra Marcum
  • Tommy Melvin
  • Warren Stacy
  • Eri Stern
  • Logan Traynor
  • Lisa Upchurch
  • Brendon Walter
  • Abe Weissman

Successful students in this class will become "dangerous" in the following ways:

  • Become a skilled user of Linux and command-line tools to solve problems and discover information that ordinary users are oblivious to. Some examples:

    • Automating repetitive tasks.
    • Searching through and/or sorting data.
    • Finding, analyzing and acting upon system information.
    • Learning more about networking, protocols, and how the Internet works.

  • Become familiar with computational thinking, in particular, coming up with algorithms, writing and designing basic programs, and exploring the creative process of programming. Some examples:

    • Construct basic Python programs.
    • Manipulate images and sound using Python.
    • Get a high-level overview of basic web programming.
    • Become comfortable using source control systems for tracking changes.
In addition, you will learn about various "dangerous" people and ideas in the world of computing - past and present.

The class has a lab component (Wednesdays) and a "regular class meeting" component (Mondays and Thursdays).

  • Mondays will tend to be an introduction to new material, with a guided hands-on exploration of those topics.
  • Wednesdays will tend to be a lab day, where you will dive deeper into the topic covered previously. As the course progresses, these labs will move from more-guided to more-independent as your comfort level increases. The lab may start with a brief discussion or catch-up from the previous session.
  • Thursdays will wrap up the week's work, and will also tend to be devoted to exploring a current or historical topic in computing, or may be devoted to covering a specialty topic/request. If there is something you would like to share or present on, there can be time made in the schedule for you to make a contribution.
Given the usual way things go, the format above is only a loose guideline, and may change as the class goes on.

Introduction to Computing and Programming in Python (Guzdial, Ericson) - Required


  • You will attend and participate in every class. More than two absences will jeopardize your standing in the class.
  • All assignments will be submitted prior to the start of the class session for which they are assigned.
  • You will submit your own original ideas and work. Plagiarism or academic dishonesty will result in failure of the course, and will be passed along without exception to college authorities.

I strongly advise you to take this class Pass/Fail if you are nervous about grades. This material and way of thinking is likely to be new to many students, and represents a substantial challenge - anxiety over letter grades only increases this challenge and can pose a severe distraction from the subject matter. We all are likely to have way more fun if you're not preoccupied with a letter grade.

  • Class participation and attendance (40%).
  • Assignments and excercises (30%).
  • Mid-term and final exercises/project (30%).
The mid-term and final exercises/project will work as follows: at mid-term, you will complete a series of exercises in class (notes, resources, spiritual advice, and Google are all available for your use). After these exercises, you will make an appointment to meet with me to review your work. At the end of class, you will undertake a final project of modest scope - a list of topics/problems will be circulated, or, with approval, you may choose a topic of your won.

If you are struggling in class, or would like to investigate a topic in greater depth, come see me. My office hours are listed on the top of this syllabus. I enjoy and look forward to meeting with you - some general guidance on making sure we are able to meet:

  • I strongly prefer email ( I am on it way too much, so you'll likely get a reply within 12 hours unless I am extremely busy.
  • If you would like to meet with me, please consult my schedule (located here) and propose a date and time that is not generally booked.
  • If you plan to drop by during my office hours, it doesn't hurt to email in advance - I like to know if you are planning to show up, and can also let you know if there might be a wait.
  • If you need to meet me outside of my office hours, 18 hours notice is strongly suggested.
The Most Ignored Advice In History: DO NOT WAIT UNTIL THE NIGHT BEFORE AN ASSIGNMENT IS DUE TO BEGIN THAT ASSIGNMENT!!!1!! This is something you can learn the easy way or the hard way. The work we do in this class, particularly programming, can be tricky and detail-oriented, and has a way of getting way out of hand under time pressure. You will make frustrating mistakes when tired and overwhelmed. Work when rested and shoot to have your work submitted in final form 24-48 hours before it is due. That way, should difficulty arise, you will have more time to work through the problem, or even possibly get help.

Everybody works differently; however, unless you are extremely confident in your abilities, start early and make sure you are not tight on time.

Reading and Assignments will be disseminated in class.