COMP 97/98, Tufts University, Fall/Spring 2014-15

Course Description

This one year experience will cover the modern practices, methods, and theory of building large-scale, complex, quality, and secure software in teams. Students will practice and apply the methods in a project that is driven by a customer for the senior capstone project. In this experience, you will deal with unstructured and open-ended problems from a customer, and will face situations where you have to make careful decisions that will have consequences towards a project –both are normal in the professional world.

Requirements analysis and design of a senior capstone project will be completed by the end of the fall semester. Implementation and testing of the project will be done in the spring semester.

Instructor

Chris Gregg, cgregg@cs.tufts.edu
Office Hours: Tue/Thurs 10:00am-11:30am, Room 262C, Halligan Hall, or by appointment.
Piazza Page: https://piazza.com/tufts/fall2014/comp97andcomp98/home

Class Meetings

Tuesdays and Thursdays, 4:30PM – 5:45PM, Halligan Hall, Room 108

Fall Information

The Big Idea: Put together you team, find a project/sponsor, begin project

Major Details

  1. Think about what kind of programming you like: front-facing, behind-the-scenes, database, video, online, embedded, networking, etc.
  2. Put together a team — between 2-4, can be with students in ECE Senior Design Project, or students in Human Factors. Deadline: Monday Sept 15th
  3. Find a project and sponsor. Projects must be large enough in scope to encompass an eight month project. This will probably be new to everyone.
  4. Determine requirements: developer tools, hardware, test devices (e.g., phone models, etc.).

    This will be a 3-4 page paper on what you will do, and how you will do it.

  5. Produce design document through meetings with your sponsor.
  6. Create a deliverables timeline (can flex, but flexing must be approved by sponsor).
  7. Learn any new tools.
  8. Produce “proof of concept” by the end of the semester.

Minor Details:

  1. You must use version control for your software (e.g., git)
  2. You must follow an “agile design” (we will discuss this in class)
  3. You must designate at least part of your project to be open source. The open source portion must be “worthwhile” to others.
  4. You must keep progress notes daily. I.e., you cannot ignore your projects. You will not pass the class if you don’t work steadily. You must produce a project Trunk site, and make me a participant.
  5. Documentation is critical. Determine how you will document your project early on and stick to the plan.

Grade Breakdown

Grades will be based on:

  1. Design document. 15%
  2. Progress notes (will be checked weekly). 15%
  3. Meeting deliverable deadlines with your sponsor. 15%
  4. Peer code reviews. 15%
  5. Documentation outline. 10%
  6. In-class project overviews / status presentations. 15%

    (2 PPT slides, what you did this week, problems faced, what are you doing next week)

  7. Proof of concept presentation. 15%

Schedule: 97, Fall 2014

Tu 2 Sep: Introduction / Last year’s letters / Brainstorming and Team Building
Th 4 Sep: Guests discussing projects

Tu 9 Sep: Version Control Systems (git, mercurial, etc.)
Th 11 Sep: Agile Development basics

Tu 16 Sep: Professionalism in software design
Th 18 Sep: What makes a successful project team?

Tu 23 Sep: How do I work on legacy code? How do I learn about the current code base,
and how do I make changes that won’t break the system. When do I rewrite legacy
code? (Dilbert comic, around 12 Aug)
Th 25 Sep: – Startup -vs- Microsoft/Google/Amazon -vs- NASA- how do real
developers develop?

Tu 30 Sep: Code review basics.
Th 2 Oct: 10 minute project overviews from each team.

Tu 7 Oct: 10 minute project overviews from each team.
Th 9 Oct: When do I bring something up to the boss?

Tu 14 Oct: The Design Document
Th 16 Oct: Why open source? (go to Richard Stallman talk!)

Tu 21 Oct: Creating workable deliverable deadlines.
Th 23 Oct: Coding interview tips/successes/horror stories

Tu 28 Oct: Case Study #1: Facebook / Stack Overflow / Reddit
Th 30 Oct: Case Study #2: ISIS (both good and bad!)

Tu 4 Nov: 10 minute project status reports from each team
Th 6 Nov: 10 minute project status reports from each team

Tu 11 Nov: NO CLASS (VETERAN’S DAY)
Th 13 Nov: Case Study #3: iPhone app success/failure

Tu 18 Nov: Case Study #4: X-Ray machine failure
Th 20 Nov: Fix an open source bug begin

Tu 25 Nov: Fix an open source bug end
Th 27 Nov: NO CLASS (THANKSGIVING)

Tu 2 Dec: What is the role of the CS major in the future? (“Humans Need Not Apply video)
Th 4 Dec: 20 minute status presentations

Tu 9 Dec: 20 minute status presentations
Th 11 Dec: 20 minute status presentations