Homework Hints and Help

Advice about Doing E28 Projects

All six assignments in E28 are programming projects. In each assignment you will be asked to write a complete program that compiles without warnings or errors and works correctly. You will also be asked to write project documentation: comments in the code as well as a design document that describes the structure of the program. The design document should be precise enough that another programmer could use it as a guide to read, understand, and possibly write a version of your program.

In some cases you will, as you did with more03, start with existing code and made additions. In other cases you will have related programs from class that demonstrate some of the ideas and techniques you can use for the project. In these cases, you have to design a collection of functions that work together.

Many People Run Late on Project One

Over the years, we see a lot of students running late on the first project and using late days. These projects take more time than many expect. Delays occur because the projects require building a medium-size program mostly from scratch, debugging the code, and writing good documentation.

Start soon by reading the requirements and starting to think about how you will solve the problem. Also, think about what you need to learn to solve the problem. The sooner you start thinking about the ideas, the sooner the back burner of your mind can process the problem. Sleeping on a problem is very helpful. Write some notes, draft a quick outline, and let is simmer for a few days.

Attend Brandon's Section

Many people who write software professionally have planning meetings. At these meetings, people discuss different ideas and approaches to building a solution. Different algorithms, models, data structures, code structures. By discussing ideas with others, you understand the problem more clearly. Also, you create your own sense of how to solve the problem.

Brandon conducts a weekly section designed to help you think about the purpose of the assignment and some of the main ideas you can use to design your solution. He uses student questions to drive the discussion, and he helps organize the questions into main ideas. This is not like the lectures that have a clear outline and agenda; the content is based on your questions.

Read over the assignment, at least briefly, before his section meeting and write down a few questions. Bring those questions to section. If you are not available at that time, watch the recording on the Zoom page of published recording on the Canvas site. We are working on a web site to submit questions for people who cannot attend. Use that; Brandon will answer submitted questions.

Submit Plans on Ed Discussion

Before writing a lot of code and pushing around syntax, make a general plan of how you want to solve the problem. This does not have to be a detailed blue-print. Instead, the plan has the main logic in outline form and descriptions of data structures the program will use. Post your plan privately on Ed. One of the teaching staff will reply with comments. We can ask you to clarify some ideas and warn you about potential tar pits.

Work at Office Hours/Virtual Lab

When this course was taught on campus, before everyone had high speed Internet at home (and on their phone and in their cars), students came to the computer lab and used the workstations to do their projects. Teaching staff were around doing their own work. Students talked to each other, discussed ideas, explained things to each other, got individual help from teaching staff, went out to pizza late at night. (Search for Pinocchio's Pizza in Harvard Square for more information.)

We have office hours a few times each week that can be open discussions, one-on-one help for specific bugs, or simply a chance to work in the company of other people.

Start Soon, Make Use of Course Support

Students report they learn a lot from doing the projects. You do not have to figure everything out on your own at the last minute. You will learn more if you spread the design, coding, and testing out over a few days.