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
- Think about what kind of programming you like: front-facing, behind-the-scenes, database, video, online, embedded, networking, etc.
- 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
- 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.
- 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.
- Produce design document through meetings with your sponsor.
- Create a deliverables timeline (can flex, but flexing must be approved by sponsor).
- Learn any new tools.
- Produce “proof of concept” by the end of the semester.
Minor Details:
- You must use version control for your software (e.g., git)
- You must follow an “agile design” (we will discuss this in class)
- You must designate at least part of your project to be open source. The open source portion must be “worthwhile” to others.
- 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.
- Documentation is critical. Determine how you will document your project early on and stick to the plan.
Grade Breakdown
Grades will be based on:
- Design document. 15%
- Progress notes (will be checked weekly). 15%
- Meeting deliverable deadlines with your sponsor. 15%
- Peer code reviews. 15%
- Documentation outline. 10%
- In-class project overviews / status presentations. 15%
(2 PPT slides, what you did this week, problems faced, what are you doing next week)
- 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