Day 17


For next time

For an upcoming assignment, we are going to use CoCalc, which is a Jupyter notebook hosting service that we are considering for ModSim in the fall.

You should already have received an invitation to join a class called SoftDes on CoCalc. Please accept it. You don’t have to pay for an upgrade; we’ll use the free service.

Feel free to explore CoCalc, but you don’t have to do anything now. We will distribute the assignment next week.

After the assignment is done, we will be interested to hear your impressions of CoCalc and what you think of using it for ModSim in the future.

Project planning strategies

When undertaking a large project like this one, there are (>=) two schools of thought:

Top-down design

Starting with the big idea, continue to refine the plan and decompose things into smaller pieces with more and more detail until each is small enough to implement.

Bottom-up design

Work on small components of your project organically as needed, then compose them into a larger system at the end.

Each strategy has pros and cons - so which approach is right?

In this class as learners, we recommend that you take a bit of a middle path: do a bit of planning up front (but be willing to change course as you learn more), develop your code bottom up (but don’t forget to pop your head up every once in a while to make sure you’re still going in the right direction).

Final project “first draft”

We want you to finish today with three deliverables. These will form the core of your Architectural Review on Tuesday.

Non-zero amount of code written and committed

This is your “first draft”, and like all first drafts it will be edited later or thrown away entirely. It might look like an extremely minimal version of your main idea, with most functions/classes/etc replaced with stub versions with mock functionality. This is still valuable, since it gives you:

System architecture diagram

Again, first draft. We wouldn’t expect you to have every function and variable specified at this point, and this plan will change, but you should begin to develop a sense of what are the major components that will form your final system. One of the highest skills in software design is developing the ability to break a complex system into reasonable pieces that work together well.

Running list of questions

As you work, you will generate a long list of questions, unknowns, and things to research further as a team. You can select an appropriate subset of these to bring to the audience for your Architectural Review.