en47/comp9 - exploring computer science

EN47/COMP09-01 - Spring 2009
Lectures: M 3:00-4:15 - Halligan Hall 118
Labs: W 3:00-4:15 - Halligan Hall 118

Instructor: Alexandre R.J. François (alex@cs.tufts.edu)
Office: Halligan Hall E011
Office hours: MW 2:00-3:00pm

TA: Mona Yousofshahi
E-mail: Mona.Yousofshahi (at) tufts.edu
Office hours: Tues. 3:30-4:30pm + Thu 3:30-4:30pm, by appointment only

course description


This half-credit course is a fast-paced introduction to the basics of programming (C++ is the language of choice) and the basics of computer science for students with minimal or NO background in computer programming, except EN 1 or EN2 where applicable. The weekly programming assignments build upon previous ones, employ important computer science algorithms, and lead to the construction of a class-wide project. We will use the Linux platform for all programming assignments.

Prerequisites: A sincere interest in learning about computer science. No prior programming experience is needed.

Optional textbook: "Starting Out with C++", 5th Edition (formerly "Alternate Version"), by Tony Gaddis, Judy Walters, and Godfrey Muganda. Published by Addison Wesley. ISBN 0-321-38348-6.


All lab assignments are expected to be completed by their due date. All assignments turned in more than one week after their due dates will receive a zero grade. If they are turned in within one week of their due date, they will be penalized at 10% per day. Failure to turn in ANY of the labs will result in an F in the class. All labs will be turned in electronically.


A class-wide project will conclude the semester. A challenging computational problem will be analyzed and divided up into sub-problems. Each student/team will design and implement a solution to one sub-problem. The solutions provided by each team will be integrated into a system that solves the original problem. All teams will present and demonstrate their work in the last week of class. Performance evaluation of the project component will include algorithm design, coding, documentation and presentation.


No exams!


Although classroom attendance is not mandatory, it is highly recommended. Please note that you are responsible for all material covered in class and lab. If you have to miss class, please check with the instructor, TA, or fellow students to figure out what you missed.


>90%=A, 90-80%=B, 80-70%=C, 70-60%=D, <60%=F.

class conduct

collaboration and academic integrity

Ask questions of the Professor and TA
Talk to other students about ideas and approaches
Get ideas from books and online sources
Always cite the source of the ideas you use in your assignments

Do not:
Share code with other students
Use ideas or code from other sources without referencing them

Presenting someone else's ideas or work as your own is a violation of academic integrity, is absolutely unacceptable, and may result in severe disciplinary action for all parties involved. See the Academic Integrity booklet from the Dean of Students' office.


This course makes extensive use of material developed (and graciously provided) by Soha Assoun.

spring 2009 schedule

Always in motion is the future. -- Yoda

Lecture 0 - Wednesday January 14:
Welcome, course overview

Monday January 19:
Martin Luther King Day (no class)

Lecture 1 - Wednesday January 21:
Introduction [pdf]

Lecture 2 - Monday January 26:
Problems, algorithms and programs [pdf]

Lab 1 - Wednesday January 28:
Getting started with Linux and Emacs [html]

Last day for AS&E students to add classes

Lecture 3 - Monday February 2:
Controlling program flow: conditionals and iteration [pdf]

Lab 2 - Wednesday February 4:
Sizes of many grids [html]
Lab 1 due at 11:59pm

Lecture 4 - Monday February 9:
Functions and symbolic constants [pdf]

Lab 3 - Wednesday February 11:
Areas under line segments [html]
Lab 2 due at 11:59pm

Monday February 16:
President's Day - no class

Lecture 5 - Wednesday February 18:
Variables and functions [pdf]

Last day for AS&E students (except first-year undergraduates) to drop courses without record of enrollment
Last day for all undergraduates (including first years)to select pass/fail Option

Lab 4 - Thursday February 19 (Monday schedule due to President's day):
Areas of irregularly-shaped quadrilaterals [html]
Lab 3 due at 11:59pm

Lecture - Monday February 23:
Review - Q & A

Lab 4 - Wednesday February 25:
Areas of irregularly-shaped quadrilaterals [html]

Last day for AS&E students to make up incomplete grades from Fall 2008

Monday March 2:
Snowstorm - campus closed - no class

Lecture 6 - Wednesday March 4:
Arrays and data structures [pdf]
Lab 4 due at 11:59pm

Lab 5 - Monday March 9:
Area of an n-sided polygon [html]

Lab - Wednesday March 11:
Project description and setup [pdf]

Spring Break

Lecture 7 - Monday March 23:
Linear search and bubble sort [pdf]

Lab 6 - Wednesday March 25:
Bubble sort and linear search [html]
Lab 5 due at 11:59pm

Lecture 8 - Monday March 30:
Recursion [pdf]

Lab 7 - Wednesday April 1:
Merge sort and binary search [html]
Lab 6 due at 11:59pm

Project - Monday April 6:
Team assignments - getting started: overall system design and algorithms

Project - Wednesday April 8:
Project: algorithms and coding
Lab 7 due at 11:59pm

Last date for undergraduate first years to drop courses without record of enrollment

Project - Monday April 13:
Project coding, testing and debugging

Project - Wednesday April 15:
Project code integration, testing and debugging

Monday April 20:
Patriot's Day (no class)

Project - Wednesday April 22:
Project presentations preparation

Project - Monday April 27:
Project presentations and demonstration

Classes end
Last day for AS&E undergraduates to withdraw from courses and receive a grade of W

no final exam

lecture notes

Lecture 1: Introduction [pdf]
Lecture 2: Problems, Algorithms, Programs (and variables and types...) [pdf]
Lecture 3: Controlling program flow: conditionals and iteration [pdf]
Lecture 4: Functions and symbolic constants [pdf]
Lecture 5: Variables and functions [pdf]
Lecture 6: Arrays and data structures [pdf]
Lecture 7: Linear search and bubble sort [pdf]
Lecture 8: Recursion [pdf]

lab notes and assignments

Lab 1: Getting started with Linux and Emacs [html]
Lab 2: Sizes of many grids [html]
Lab 3: Areas under line segments [html]
Lab 4: Areas of irregularly-shaped quadrilaterals [html]
Lab 5: Area of an n-sided polygon [html]
Lab 6: Bubble sort and linear search [html]
Lab 7: Merge sort and binary search [html]


interesting videos/podcasts

TED: Ideas worth spreading [link]
For example: birth of the computer, videogames, schools and creativity.

names of things (e.g. functions, variables, constants)

Excerpt from Through the Looking Glass (by Lewis Caroll), Chapter VIII:

`You are sad,' the Knight said in an anxious tone: `let me sing you a song to comfort you.'
`Is it very long?' Alice asked, for she had heard a good deal of poetry that day.
`It's long,' said the Knight, `but it's very, very beautiful. Everybody that hears me sing it -- either it brings the tears into their eyes, or else --'
`Or else what?' said Alice, for the Knight had made a sudden pause.
`Or else it doesn't, you know. The name of the song is called "Haddocks' Eyes".'
`Oh, that's the name of the song, is it?' Alice said, trying to feel interested.
`No, you don't understand,' the Knight said, looking a little vexed. `That's what the name is called. The name really is "The Aged Aged Man".'
`Then I ought to have said "That's what the song is called"?' Alice corrected herself.
`No, you oughtn't: that's quite another thing! The song is called "Ways and Means": but that's only what it's called, you know!'
`Well, what is the song, then?' said Alice, who was by this time completely bewildered.
`I was coming to that,' the Knight said. `The song really is "A-sitting On a Gate": and the tune's my own invention.'
arjf © 2008-2009