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


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


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