San Jose State University : Site Name


Main Content

Working in Mars Mission Control, JPL

Ronald Mak

Department of Computer Science
Department of Computer Engineering
Spring Semester 2016

Office hours: TuTh: 4:30-5:30 PM
Office location: MacQuarrie Hall, room 413
Mission Control, Jet Propulsion Laboratory (JPL)
NASA Mars Exploration Rover Mission

CS 160 Software Engineering

Section 1: TuTh   9:00 - 10:15 AM, MH 422
Section 2: TuTh 10:30 - 11:45 AM, MH 422

CMPE/SE 131 Software Engineering

Section 1: TuTh 3:00 - 4:15 PM, DH 250

Project teams

CS 160-01
Team Product Documents
Big Trains Bus Stop brochure concept design review
Code Ninjas Connect You brochure concept design review
Mak Survival Group JereJournal brochure concept design review
Revy Reviews You Can Trust brochure concept design review
Ruby Baby Nugget brochure concept design review
Softneers Food Buddy brochure concept design review
TBA Tasty Based Awesomeness brochure concept design review
Underground RailsRoad LazySandwich brochure concept design review

CS 160-02
Team Product Documents
Face WebMusic brochure concept design review
Green Launcher brochure concept design review
Hacking Bad ShopSJSU brochure concept design review
Mak & Cheese Purplebox brochure concept design review
Spartans on Rails WishList++ brochure concept design review
SpartanSE NearBite brochure concept design review
The A Team JoinIn brochure concept design review
The Directors CineTracker brochure concept design review

CMPE 131-01
Team Product Documents
ARMY ClubHub brochure concept design review
Codiggers ClubHub brochure concept design review
Cupid's Minions Bumpin' Uglies brochure concept design review
Fabulous #1 Auto Body Shop brochure concept design review
JAMH JAMH brochure concept design review
Gains Cookbook brochure concept design review
NoName4 Book Domain brochure concept design review
Piramides Opus Swap brochure concept design review
Rubber Ducks Naac brochure concept design review
RubyLand SpartaRoomie brochure concept design review
Sour Patch Kids EE101 Tester brochure concept design review
Unispace BookBag brochure concept design review


# Date Due Assignment
1 Jan 28 Feb 8 Write a Ruby program

Input file: widgets.csv
Expected output (match closely): widgets.out

Suggested solution: Widgets.rb
2 Feb 11 Feb 19 First draft with Rails
3 Feb 18 Feb 26 Functional Specification
Use case description form
CS 100W report rubrics
4 Feb 23   Conceptual design and oral presentation
PowerPoint rubrics
5 Mar 10 Mar 25 Model-view-controller architecture and data models
6 Apr 5 Apr 15 Project schedule (Gantt chart)
7 Apr 14 Apr 22 Test cases


Date Solutions
Midterm Mar 17 solutions


Date Content
Jan 28 Slides: Goals of the course; what is software engineering; programming in the small and large; complexity and change; the five C's; method, methodology, process; team member roles; class projects; project teams; postmortem report; grading; web application architecture; static and dynamic web pages; Rails application architecture
Feb 2 Slides: Ruby interpreter IRB; variables; types: numbers, strings, symbols, arrays, hashes, booleans; conditional assignment; constants; conditional statements; iteration; methods; classes; getters and setters; inheritance; batch programs; simple I/O; Assignment #1
Feb 4 Slides: Full stack framework; Rails mantra; model-view-controller (MVC); fast start; Rails example; Rails directory structure; Rails commands; database migrations; scaffolding code; SQLite; object-relational mapping (ORM); Rails console; create, query, update, delete database records; database schema
Feb 9 Slides: Add a table column; data validation; table associations; comments table; controllers; REST; routing; controller actions; redirct vs. render; embedded Ruby file (.erb); response formats; flash messages; comments controller
Feb 11 Slides: Assignment #1 suggested solution; views; embedded Ruby; output tags; control flow tags; helpers; index page generation; layouts; forms; Assignment #2
Feb 16 Slides: Version control system: local, centralized, and distributed; Git: file differences vs. snapshots, local and remote operations and repositories, three file states; GitHub: personal account, team repository, clone local repository; Git: local changes, already have local files, push and pull; GitHub repository statistics; GUI-based Git interface; deployment to Heroku
Feb 18 Slides: Project phases; waterfall model; agile software development; requirements elicitation; bridging the gap; functional and nonfunctional requirements; what requirements must have; strong statements; how to get requirements; use cases; UML use case diagram; use case description; ATM example functional specification; Assignment #3
Feb 23 Slides: Conceptual design; example conceptual design presentation; Assignment #4
Feb 25 Slides: Analysis goal and submodels; MVC model, view, and controller objects; bank ATM example; dynamic model; UML sequence diagram; UML statechart diagram; object model associations; aggregations and compositions; generalization; attributes; system design; designing a compiler; software architecture; partitioning; coupling; framework classes; cohesion; services
Mar 1 Oral conceptual design reviews
Mar 3 Oral conceptual design reviews
Mar 8 Slides: Layering; data independence; repository issues; database system architecture; steps to develop a database; database requirements; data modeling: conceptual, logical, physical; entities and attributes; conceptual model example; ER diagram; relationships; cardinality; example ER diagrams
Mar 10 Slides: Relationships: 1:1, 1:M, M:N, exact cardinalities, attributes; logical data model; relational tables; primary key; mapping entities; entity integrity constraint; foreign keys; mapping relationships: 1:1, 1:M, M:N; school database example; normalization: first and second normal forms; Assignment #5
Mar 15 Slides: SQL; query examples; joins; record insert, update, delete; create and drop a database; create a table; school example; database connection pool; data access layer; review for the midterm
Mar 17 Midterm exam
Mar 22 Slides: Midterm solutions; bug tracking; Bugzilla; bug lifecycle; managing expectations; estimates, targets, and commitments; good estimates; time unit inflation; estimation techniques; project schedules: Gantt chart, PERT chart, resources chart
Mar 24 Slides: Project team design reviews; "Sins of Software Estimation"; work breakdown structure; project schedule; Gantt chart; Gantt chart demo; critical path; PERT chart
Apr 5 Oral application design reviews
Apr 7 Oral application design reviews
Apr 12 Slides: Project cartoon; one month to go; cost of correcting defects; make small mistakes early; software V&V; software testing; software reliability; testing: mindset, who does it, when, different types; unit testing; testing framework; Rails support for testing; integration testing; stress testing; regression testing
Apr 14 Slides: Profiling; usability; Don't Make Me Think; read vs. scan a web page; "satisfice"; conventions, visual hierarchies; usability testing the Apple Newton; beta testing the NASA Mars rover mission; system testing; acceptance testing; when to stop testing; test plan; example functional test case; Assignment #7; test-driven development (TDD); logging; Rails support for logging and debugging
Apr 19 Slides: Code reviews; formal code review; what to review; what to ask; why do code reviews; benefits; resistance; pros and cons; continuous code reviews; productive reviews; what to look for; software metrics; good metrics; how to use; process metrics; project metrics: objective and subjective; metric normalization: size-oriented and function point
Apr 21 Slides: Project scheduling triangle; project failures: causes, signs, and phases; Denver International Airport's automated baggage-handling system; how to spot impending doom; when to kill a project; software engineering code; whistle-blowing; speaking out
Apr 26 Oral code reviews
Apr 28 Oral code reviews
May 3 Slides: Risk management; personnel management; NASA project do's and don'ts; Extreme Programming: dealing with risk, five values, basic principles, best practices, manager's job, implementation barriers
May 5 Slides: Rational Unified Process (RUP); essential principles; key modeling elements: roles, activities, artifacts, and workflows; disciplines; phases: inception, elaboration, construction, and transition
May 10 Product demos
May 12 Product demos

Slides: Review for the final


First goal: You'll learn the general concepts of software engineering and relevant topics of the software development process within the context of a hands-on team project. Understand the additional challenges of programming-in-the-large over programming-in-the-small.

Second goal: So that you can immediately apply software engineering concepts, you'll learn to work on a small team to build and deploy a web application using the full-stack Ruby on Rails framework, which supports important client-server concepts:

During the semester, each project team will

These are important real-world job skills for the professional software developer! This is a challenging course that will demand much of your time and effort throughout the semester.


Department policy is to enforce
all course prerequisites strictly

CS major
CS 100W Technical writing grade C or better
CS 146 Data structures and algorithms grade C- or better
CS 151 Object-oriented design grade C- or better
CMPE major
CMPE 126 Algorithms and data structure design grade C or better
SE major
CS 46B Introduction to data structures grade C or better

Required books

Beginning Software Engineering
Rod Stephens
Wrox/Wiley, 2015
ISBN: 978-1118969144
Rails Crash Course: A No-Nonsense Guide to Rails Development
Anthony Lewis
No Starch Press, 2015
ISBN: 978-1593275723

Software to install

As described in Rails Crash Course, you will need to download and install on your Mac, Windows, or Linux platform the following software: Ruby, Rails, Git, Heroku.

Updated instructions to install on Windows.

Download and install either of the following:

Also download and install:

There may be other software packages announced during the semester.