San Jose State University : Site Name

Navigation

Main Content

Working in Mars Mission Control, JPL

Ronald Mak

Department of Computer Science
Spring Semester 2012

Office hours: MW: 8:45-10:00 PM
Office location: MacQuarrie Hall, room 413
E-mail: ron.mak@sjsu.edu
Mission Control, Jet Propulsion Laboratory (JPL)
NASA Mars Exploration Rover Mission

CS 151: Object-Oriented Design


Section 1: MW 6:00-7:15 pm MacQuarrie Hall 222
Section 2: MW 7:30-8:45 pm MacQuarrie Hall 222

Computer History Museum visit on Saturday, May 12, at 12:30 PM. Experience the restored and fully operational IBM 1401 computer system, the life-size working model of the Babbage Difference Engine, and the Revolution exhibits. Meet in the main lobby of the museum.


Student internship positions at NASA Ames


Student internship positions currently open for the System F6 Program at the NASA Ames Research Center.


Assignments


# Date Due Assignment
1 Feb 6 Feb 15 Functional Specification
Use case form
2 Feb 15 Feb 24 Design Specification
3 Feb 27 Mar 9 First version of Rock-Paper-Scissors game
4 Mar 9 Apr 2 Smart computer throw calculator
5 Apr 2 Apr 20 Graphical User Interface
6 Apr 30 May 14 UML Class Diagram and Design Pattern Uses


Lectures


Date Content
Jan 25 Slides: Introduction; grading; object-oriented analysis and design; journey to good design; iterative process; Rick's Guitars example; encapsulation; refactoring
Jan 30 Slides: More instruments; abstract classes; design that doesn't scale well; revisiting a design
Feb 1 Slides: Analysis; requirements: sources and types, stated and implied; automatic dog door example; use cases; functional specification
Feb 6 Slides: Waterfall model; agile software development; eliciting requirements; use cases; UML use case diagram; use case description; Assignment #1; where do classes come from; categories of classes; class responsibilities; class relationships: dependency, aggregation, inheritance
Use case description template which you can use for Assignment #1
Feb 8 Slides: (Thanks to Ahmad Yazdankhah) Recap: analysis, design, implementation; CRC technique; UML diagrams: class, sequence, state; javadoc utility; UML diagramming tools
Feb 13 Slides: Teams; examples: textual analysis example, CRC cards, sequence diagram, package and class diagrams, voice mail system
Feb 15 Slides: Updated teams; Assignment #2; voice mail system case study
Feb 20 Slides: Improvements to the example voice mail system; Java Date and Calendar classes; designing a Day class; coding to the interface; factory design pattern; accessors and mutators; immutable classes; sharing references to mutable objects; final fields
Feb 22 Slides: Review Assignment #1; Accessors and mutators; side effects; good interfaces: cohesion, completeness, clarity, consistency
Feb 27 Slides: Assignment #3; programming by contract; preconditions; queue as a circular array; assertions; postconditions; class invariants; interface invariants and implementation invariants
Feb 29 Slides: Unit tests; JUnit; version control systems: local, centralized, distributed; Git; GitHub
Mar 5 Slides: Review Assignment #2; design patterns; factory method design pattern; code to the interface; class hierarchy puzzle; "is a" with subclasses and interfaces; instanceof operator; Icon interface type; interface methods and variables; objects and interfaces
Mar 7 Slides: Feed our pets; marker interfaces; polymorphism; comparable interface; comparator interface; anonymous classes
Mar 12 Slides: Assignment #4; Java Foundation Classes (JFC, Swing); JFrame; JButton; JTextField; FlowLayout; ActionListener interface; Inversion of Control; Timer; timer actions; graphics context; Shape interface; drawing methods; Java interface as a contract
Mar 14 Slides: Assignment #4 again; class and interface design for animation
Mar 19 Slides: Review for the midterm
Apr 2 Slides: Midterm solution; Assignment #5; NetBeans and Swing
Apr 4 Slides: Layout managers; Strategy Design Pattern; Model-View-Controller; Observer Design Pattern; compound objects; Composite Design Pattern; Swing component class hierarchy; team UML class diagram exercise
Apr 9 Slides: Iterator design pattern (linked lists); decorator design pattern (scrollbars, I/O stream); design patterns usage example
Apr 11 Slides: Original "Gang of Four" design patterns; mouse events; mouse adapter
Apr 16 Slides: Computer History Museum; inheritance; superclasses and subclasses; class hierarchies; Liskov Substitution Principle; invoking superclass methods and contructors; invoking a class's own constructor; superclass method preconditions and postconditions; favor composition over inheritance
Apr 18 Slides: Cooking; creativity; composition over inheritance; superclasses and interfaces; abstract class; template method design pattern; refactoring; multiple inheritance; geometric shapes class hierarchy; exceptions class hierarchy; catching exceptions
Apr 23 Slides: (Thanks to Ahmad Yazdankhah) What is a type; types Java supports; what is a subtype; array type; type inquiry; Object class: toString(), equals(), clone(), serialization
Apr 25 Slides: (Thanks to Ahmad Yazdankhah) Generic types; generic type definition; generic methods; type erasure; type bounds and wildcards; reflection; invoking methods
Apr 30 Slides: JUnit magic; reflection; metadata descriptor classes: Class, Field, Constructor, Array; method descriptor; invoking a method; inspecting an object; frameworks; application framework; applet framework; Applet; Assignment #6
May 2 Slides: Java collections framework; Collections class; Collection interface; AbstractCollection class; Iterator and Iterable interfaces; adding a new collection class; Set, List, and ListIterator interfaces; lists and binary searches; RandomAccess interface; views
May 7 Slides: Multithreaded programming: advantages, disadvantages, multicore, GUI; creating threads; Runnable interface; thread states; activating and terminating threads; thread synchronization; race condition; locks; lock conditions; thread-safe adding to and removing from a bounded queue; multithreaded programming is hard!
May 9 Slides: Race condition defined; thread-safe defined; thread-safe collections; object locks; the synchronized keyword; animation of merge sort
May 14 Slides: Postmortem report; review for the final examination


Goals


First goal: You'll learn to develop well-designed software applications that do what they're supposed to do, use proven object-oriented techniques, and that are flexible, reliable, and maintainable. You'll become better programmers .

Good designs don't just happen. Each one is a destination, one that always requires a journey to reach. Every programmer, whether beginner or experienced, must take this trip for each and every project. An inexperienced programmer may meander, take the wrong paths, and maybe even backtrack before reaching that destination. But with practice and knowledge of design patterns and good object-oriented tools and techniques, subsequent journeys will become shorter.

Second goal: You'll learn critical job skills that employers look for in new college hires. You'll work together in small project teams and gain experience on how to cooperate and coordinate your joint efforts to design, develop, and test applications that each consists of over a dozen Java classes. You'll employ modern industry-standard software engineering practices. Each team will take its separate journey to Good Design.


Prerequisites

Math 42 Discrete Mathematics grade C- or better
CS 46B Introduction to Data Structures grade C- or better
CS 49J Programming in Java
(or equivalent knowledge of Java)
grade C- or better
  Department policy is to enforce  
  all course prerequisites strictly.  

Required books


Object-Oriented Design & Patterns, 2nd ed.
Cay Horstmann
Wiley Publishing, Inc., 2006
ISBN: 978-0471744870


Recommended books


The Object-Oriented Thought Process, 3rd ed.
Matt Weisfeld
Addison-Wesley Professional, 2008
ISBN: 978-0672330162
Head First Object-Oriented Analysis & Design
Brett D. McLaughlin, et al.
O'Reilly Media, 2006
ISBN: 978-0596008673


Who am I?


As a Senior Computer Scientist at the NASA Ames Research Center, I am designing, developing, and leading a software lab for the System F6 (Future, Fast, Flexible, Fractionated, Free-Flying) program that will demonstrate the feasibility of distributing functionality over a cluster of satellites, as opposed to using traditional monolithic multi-function satellites. On an earlier mission, I designed and led the development of the middleware for a key information management system for NASA's Mars Exploration Rover (MER) mission. As a Research Staff Member at the IBM Almaden Research Center in San Jose, I implemented a software platform that integrates multiple heterogeneous simulation models in order to help solve the nation's obesity problem. I was the Enterprise Software Strategist at the Lawrence Livermore National Laboratory for a major laser-based fusion energy project, the National Ignition Facility (NIF), where I helped design and develop a scientific workflow system to manage the data generated by the laser firings.

I have degrees in the mathematical sciences and in computer science from Stanford University. I've written books on compiler writing, software engineering, and numerical computation, and I contributed a chapter to the book Beautiful Code which won the Jolt Award. I find designing and developing software such as compilers and enterprise systems to be fun and challenging. So I'm the kind of geek nobody wants to talk to at parties. My one redeeming feature is that I have two cute cats.


 
Past courses I've taught at SJSU
CS 153-01/SE 153: Concepts of Compiler Design
CS 160: Software Engineering
CS 185C-01/CS 286-03: The History of Computing
Speaker series: The History of Computing