Second Quarter

By the end of chapter 12 you know enough python to write some reasonably advanced code. For the second quarter we switch from doing ad-hoc programming to more rigoroussoftware engineering. For second quarter your work goals are to
  1. Finish any programming assignments incomplete from Q1. This important so that you have experience with all the fundemental programming concepts.
  2. Complete a mini-project (say about 2 weeks of work) that requires you to use professional third-party code (code that someone else wrote for you). It also requires you to understand someone else's programming interface so that you can use the functionality they provide. Everyone will be required to complete the same mini-project.
  3. Complete a major project that requires you to do some user interface and program design, and use object-oriented technologies. There will be two options for the major project.
Your learning goals will be to plan, write, and document your code with more rigorous software engineering skills and processes. Here are the major differences for my 2nd quarter expectations compared to 1st quarter.
  1. Now you must submit a planning document that describes for me what your project will do and its major functional units, using block diagrams, flow charts, and function declarations (e.g. give me function headers that describe the inputs, algorithms, and outputs for every function in your program).
  2. I will assess your projects not just on functionality, but also style guidelines like PEP-8, and coding conventions (use of while-loops vs. for-loops, variable names, program flow, etc.). These will be more qualitatve assesments.
  3. You will be required to do code-reviews where you and a partner go over each others' code and suggest improvements and optimizations, and write compare-contrast documents for your codebases.
Writing your code will only be part of the challenge now. Much of your work will involve designing and documenting your software not just writing it.