San Jose State University : Site Name


Main Content

Working in Mars Mission Control, JPL

Ronald Mak

Department of Computer Engineering
Spring Semester 2017

Office hours: Th: 2:30-4:30 PM
Office location: ENG 250
Mission Control, Jet Propulsion Laboratory (JPL)
NASA Mars Exploration Rover Mission

CMPE/SE 131 Software Engineering

Section 3: TuTh 9:00 - 10:15 AM, room ENG 337

Project teams

Team Product Documents
Clippers Household Schedule Manager brochure concept design review demo
CMPE Pretzel Time brochure concept design review demo
Derailed Ruby PlateRate brochure concept design review demo
Fitness Fitness Plus brochure concept design review demo
Frontier Car Rental Service brochure concept design review demo
GPS EzExam brochure concept design review demo
Hyper Ruby Textchange brochure concept design review demo
M.E.G.A. Chore Weasel brochure concept design review demo
No Name 3 Kanvas brochure concept design review demo
Pear Spartan Compass brochure concept design review demo
Power Play Power Play brochure concept design review demo
Team 131 SJSU Class Evaluations brochure concept design review demo
Team NVC Engineering Gallery brochure concept design review demo
The Best BEST-Dining brochure concept design review demo
The Bugsters Bugster brochure concept design review demo
The Warriors brochure concept design review demo


# Date Due Assignment
1 Feb 2 Feb 14 First draft with Rails
2 Feb 14 Feb 20 Source code repository
3 Feb 16 Feb 24 Functional Specification

Formal report rubrics
Use case description form
4 Feb 21 Mar 3 Conceptual design and oral presentation

PowerPoint rubrics
5 Mar 14 Mar 24 Design Document and oral presentation
6 Mar 23 Apr 10 Project schedule (Gantt chart)
7 Apr 13 Apr 21 Test cases


Date Content
Jan 26 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
Jan 31 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
Feb 2 Slides: Full stack framework; Assignment #1; 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 7 Slides: Add a table column; data validation; table associations; comments table; controllers; REST; routing; controller actions; redirect vs. render; embedded Ruby file (.erb); response formats; flash messages; comments controller
Feb 9 Slides: Database actions and HTTP verbs; default RESTful actions; route prefix; path and UTL helper functions; views; embedded Ruby; output tags; control flow tags; helpers; index page generation; layouts; partials; displaying comments; forms; Post form; form errors; comment form
Feb 14 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 16 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 21 Slides: Conceptual design; example conceptual design presentation; Assignment #4; design video

Prototype example
Feb 23 Slides: Analysis; models; MVC model, view, and controller objects; bank ATM example; object model associations; aggregations and compositions; generalization; attributes; dynamic model; UML sequence diagram; UML statechart diagram; system design; designing a compiler; software architecture; partitioning; coupling; framework classes; cohesion; services
Feb 28 Oral conceptual design reviews
Mar 2 Oral conceptual design reviews
Mar 7 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; relationships: 1:1, 1:M, M:N, exact cardinalities, attributes
Mar 9 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 14 Slides: SQL; query examples; joins; record insert, update, delete; create and drop a database; create and drop tables; database connection pool; data access layer; review for the midterm
Oct 13 Midterm exam
Mar 21 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 23 Slides: Project team design reviews; "Sins of Software Estimation"; work breakdown structure; project schedule; Gantt chart; Gantt chart demo; critical path; Assignment #6
Apr 4 Oral application design reviews
Apr 6 Oral application design reviews
Apr 11 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 13 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 #6; test-driven development (TDD); logging; Rails support for logging and debugging
Apr 18 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 20 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 25 Oral code reviews
Apr 27 Oral code reviews
May 2 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 4 Slides: Rational Unified Process (RUP); essential principles; key modeling elements: roles, activities, artifacts, and workflows; disciplines; phases: inception, elaboration, construction, and transition; cyberethics: four time periods; what is morality? what is ethics? what is a profession? who is a professional? special moral responsibilities; codes of ethics and conduct; professional responsibility; causality vs. intent; moral responsibility vs. legal liability vs. accountability; important ethical issues; USS Vincennes
May 9 Slides: Review for the final

Prof. Keith Perry: EPICS slides
May 11 Product demos
May 16 Product demos


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

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
ISE major
CMPE 30 Programming Concepts and Methodology grade C- or better
Allowed Declared Majors: Any Engineering

Required books

Rails Crash Course: A No-Nonsense Guide to Rails Development
Anthony Lewis
No Starch Press, 2015
ISBN: 978-1593275723
Ruby on Rails Quick Start Guide (Google doc)
Melvin Ch'ng

Recommended books

Ruby on Rails Tutorial, 4th edition
Michael Hartl
Addison-Wesley Professional, 2016
ISBN: 978-0134598628
Free online edition
Install onto your local machine instead of the
"cloud integrated development environment".
Beginning Software Engineering
Rod Stephens
Wrox/Wiley, 2015
ISBN: 978-1118969144

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.

New 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.