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

CSSE 120
Introduction to Software Development (Robotics)

Winter 2014-2015 (aka 201520)

What to do, When

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

Before this session, do Session 1 Preparation.
Session 2, 12/3: 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, 12/5: 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, 12/8: Implementing functions with parameters.
Accumulators: Summing.
Unit testing.
Writing simple tests.
Test-first development.

Before this session, do Session 4 Preparation.
Session 5, 12/10: 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, 12/12: 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, 12/15: 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, 12/17: Waiting for Events.
Indefinite Loops.
Application: Robots II: Sensing its environment.

Before this session, do Session 8 Preparation. (note that it is called Session 9)
Session 9, 12/19: 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.
Session 10, 1/5: 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, 1/7: 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, 1/9: 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, 1/12: Sequence methods.
Test 2 practice.

Before this session, do Session 13 Preparation.
Session 14, 1/14: Nested Loops I: Simple loops within loops.
Before this session, do Session 14 Preparation.
Session 15, 1/16: 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.
Session 16, 1/19: Nested Loops II: More complicated loops within loops.
Finite state machines: Application to more complicated logic.
Looping patterns: Summary II.

Before this session, do Session 16 Preparation.
Session 17, 1/21: 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 17 Preparation.
Session 18, 1/23: Defining classes II: More practice. Before this session, do Session 18 Preparation.
Session 19, 1/26:
Defining classes III: Inheritance.
Multiple implementations of the same interface.
Before this session, do Session 19 Preparation.
Session 20, 1/28: Test 3 Practice.
Before this session, do Session 20 Preparation.
Session 21, 1/30: Test 3. You MUST have completed Session20_Test3Practice (including its paper-and-pencil exercises linked, with an answer key, from the test preparation page) BEFORE you take Test 3. It is your ADMISSION TICKET to the test. Talk to your instructor if that poses a problem for you.
Session 22, 2/2: Project Kickoff.
Agile/Scrum: Sprints, Features.
Event-Driven Programming.
Tkinter I: root/mainloop, frame, buttons, responding to button-clicks.
Teaming I: responsibilities.
Sprint 1 planning.

Before this session, do Session 22 Preparation.
Session 23, 2/4: 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 1 begins.
Session 24, 2/6: Tkinter III. More GUI objects.
Dictionaries. Attributes are implemented using dictionaries.
Sprint 1 continues.
Session 25, 2/9: More practice at integrating code.
Application: PID line-following.
Application: Following waypoints.
Sprint 1 ends. Sprint 2 planning.
Session 26, 2/11: Application: Image processing.
Application: Robot conversation (via LEDs + camera with vision processing, or via IR emitters and receivers), protocols.
Sprint 2 begins.
Session 27, 2/13: Application: Multiple threads and processes.
Sprint 2 continues.
Session 28, 2/16: More practice at integrating code.
Sprint 2 ends. Sprint 3 planning.
Session 29, 2/18: Work on project.
Sprint 3 continues.
Session 30, 2/20: Work on project.
Sprint 3 ends.
Final Exam: Cancelled! There is no final exam in CSSE 120 this term.

Resources

Human (and other) Help