Woman engineer drawing UML diagram on glass Students using Create robots in CSSE 120

CSSE 120
Introduction to Software Development (Robotics)

Summer 2013-2014 (aka 201440)

This is an online class. The days (MWF) and dates (6/9, 6/ 11, etc.) exist only to suggest the approximate pace. See Question 2 of How this online course will work for details.

What to do, When

Mondays Wednesdays Fridays
Session 1, 6/9: Introduction to Python.
Tools for software development: Eclipse, Pydev console, Subversion (SVN).

Before this session, do Session 1 Preparation.
Session 2, 6/11: Input-Compute-Output.
Coding to a specification.
Calling functions.
Debugging techniques I: Correcting compile-time (syntax) errors.

Before this session, do Session 2 Preparation.

Note: This session's preparation is, BY FAR, the largest "before-the-session" work of the term. Plan a solid 2 to 4 hours to do this important work.

Session 3, 6/13: Counted loops.
Objects.
Coding: First Solve It By Hand.
Debugging techniques II: Run-time errors, stack traces.
Application: Graphics.

Before this session, do Session 3 Preparation.
Session 4, 6/16: Implementing functions with parameters.
Accumulators: Summing.
Unit testing.
Writing simple tests.
Test-first development.

Before this session, do Session 4 Preparation.
Session 5, 6/18: Pair programming.
Debugging techniques III: Tracing by hand and with the debugger.
Application: Robots I: Motion.

Before this session, do Session 5 Preparation.
Session 6, 6/20: Conditionals I: boolean values; if, if-else, if-elif...
Accumulators: Counting, Graphical Patterns.
Writing good unit tests.

Before this session, do Session 6 Preparation.
Session 7, 6/23: Debugging techniques IV: Deciphering run-time error messages.
Practice tracing code by hand.
Test 1 Practice.

Before this session, do Session 7 Preparation.
Session 8, 6/25: Waiting for Events.
Indefinite Loops.
Application: Robots II: Sensing its environment.

Before this session, do Session 8 Preparation.
Session 9, 6/27:
Test 1. You MUST have completed Session07_Test1Practice (including its paper-and-pencil exercise) BEFORE you take Test 1. It is your ADMISSION TICKET to the test. Talk to your instructor if that poses a problem for you.

Before this session, do Session 9 Preparation.
Session 10, 6/30: Sequences and indices.
Patterns for iterating through sequences, I: Forward/backwards, with steps; Selecting items; Counting/summing/etc.

Before this session, do Session 10 Preparation.
Session 11, 7/2: Patterns for iterating through sequences, II: Find; Max/min; Two indices at each iteration; Two sequences in parallel.
Building sequences.

Before this session, do Session 11 Preparation.
Session 12, 7/4: References to objects. Mutating objects.
Conditionals II: Logical operators; Nested conditionals; Pitfalls.
More practice tracing code by hand.
Before this session, do Session 12 Preparation.
Session 13, 7/7: Debugging techniques V: Locating the source of a run-time error.
String methods.
Application: String processing.
Test 2 practice.

Before this session, do Session 13 Preparation.
Session 14, 7/9: Nested Loops I: Simple loops within loops.
Looping patterns: Summary I.
Blocking messages versus nonblocking messages.
Application: Robots III, singing and dancing.

Before this session, do Session 14 Preparation.
Session 15, 7/11:
Test 2. You MUST have completed Session13_Test2Practice (including its paper-and-pencil exercise) BEFORE you take Test 2. It is your ADMISSION TICKET to the test. Talk to your instructor if that poses a problem for you.

Before this session, do Session 15 Preparation.
Session 16, 7/14: Iterative enhancement.
Procedural decomposition I.

Before this session, do Session 16 Preparation.
Session 17, 7/16: Procedural decomposition II.
Exceptions and try/except.
Application: File I/O.

Before this session, do Session 17 Preparation.
Session 18, 7/18: Defining classes I:
Object-oriented Design; IS-A, HAS-A relationships in UML class diagrams;
Defining constructors, fields, methods; What “self” means.

Before this session, do Session 18 Preparation.
Session 19, 7/21: Defining classes II:
Inheritance.
Multiple implementations of the same interface.
Before this session, do Session 19 Preparation.
Session 20, 7/23: Defining classes III: More practice.
Test 3 Practice.
Before this session, do Session 20 Preparation.
Session 21, 7/25: Project Kickoff.
Agile/Scrum: Sprints, Features.
Event-Driven Programming.
Tkinter I: root/mainloop, frame, buttons, responding to button-clicks.
Teaming I: responsibilities.
Sprint 0 begins.
Before this session, do Session 21 Preparation.
Session 22a, 7/28: How to divide up and later integrate work: Integration testing.
Tkinter II. Using classes for shared data.
Inheritance: Extending tkinter classes.
Teaming II: roles.
Project planning at the beginning of a sprint.
Sprint 0 ends, Sprint 1 begins.
Before this session, do Session 22a Preparation.
Session 22b, any time before 8/11:
Test 3. You MUST have completed Session20_Test3Practice (including its paper-and-pencil exercise) BEFORE you take Test 3. It is your ADMISSION TICKET to the test. Talk to your instructor if that poses a problem for you.

Before this session, do Session 22b Preparation.
7/29 to 8/10:
Catch-up time. David Mutchler will have limited availability during this time.
Session 22c, 8/11: Tkinter III. More GUI objects.
Dictionaries. Attributes are implemented using dictionaries.
Sprint 1 continues.

Before this session, do Session 22c Preparation.
Session 23, 8/13: Protocols.
Application: Robot speech (via IR).
Sprint 1 continues.
Before this session, do Session 23 Preparation.
Session 24, 8/15: Application: Image processing.
Sprint 1 ends, Sprint 2 begins.
Before this test, do Session 24 Preparation.
Session 25, 8/18: Application: Multiple threads and processes.
Sprint 2 continues.
Before this test, do Session 25 Preparation.
Session 26, 8/20: Nested Loops II: More complicated loops within loops.
Finite state machines: Application to more complicated logic.
Looping patterns: Summary II.
Sprint 2 continues.
Before this session, do Session 26 Preparation.
Session 27, 8/22: More practice at integrating code.
Sprint 2 ends. Sprint 3 begins.
Before this session, do Session 27 Preparation.
Session 28, 8/25: Work on project.
Sprint 3 continues.

Before this session, do Session 28 Preparation.
Session 29, 8/27: Work on project.
Test 4 practice.
Sprint 3 continues.

Before this session, do Session 29 Preparation.
Session 30, after you return to Rose-Hulman for the fall term:
Sprint 3 ends.
Demonstrate your project to your instructor. At Rose-Hulman, with your teammates, at times TBD.
Test 4. At Rose-Hulman, at times TBD. You MUST have completed Session29_Test4Practice (including its paper-and-pencil exercise) BEFORE you take Test 4. It is your ADMISSION TICKET to the test. Talk to your instructor if that poses a problem for you.

Before this session, do Session 30 Preparation.

Resources

Human (and other) Help