San Jose State University : Site Name


Main Content

Working in Mars Mission Control, JPL

Ronald Mak

Department of Computer Science
Department of Applied Data Science
Engineering Extended Studies
Spring Semester 2024

Office hours: TuTh 4:30 – 5:30 PM Clark Hall CL 325
Office location: Clark Hall CL 325 (mostly working from home)
Click for:
Open student internships
at the NASA Ames Research Center

Check regularly. Positions open sporadically.
Mission Control, Jet Propulsion Laboratory (JPL)
NASA Mars Exploration Rover Mission

Click on the classes I'm teaching this semester:


DATA 200

Computational Programming for Data Analytics (Python)


CMPE 202

Software Systems Engineering (C++)

Look below to access classes I've recently taught and to see books I've recently examined.

Who am I?

Despite having done work that involved the relative motions of planets and calculations involving Einstein's Theory of Relativity, I'm still amazed that the sun comes up each morning and that bicycles don't tip over. I find designing and developing software such as compilers and enterprise systems to be fun and challenging. I buy books on advanced math and then actually read them. So I'm the kind of geek nobody wants to talk to at parties. My one redeeming feature is that I am owned by cute cats.

Student internships at NASA Ames. I am the Principal Investigator (P.I.) for a subcontracting agreement between KBR/NASA and the San Jose State University Research Foundation to hire student interns for NASA Ames. I post open internship and fulltime positions.

Books. My latest book is Object-Oriented Software Design in C++.
Earlier books include:

I coauthored the chapter "Compilers and Interpreters" in Computing Handbook, 3rd ed., and I wrote the chapter "A Highly Reliable Enterprise System for NASA's Mars Rover Mission" in Beautiful Code: Leading Programmers Explain How They Think which won a Jolt Award in 2007.

Mars rovers. Working as a Senior Scientist in the Research Institute for Advanced Computer Science (RIACS) at the NASA Ames Research Center and the Jet Propulsion Laboratory (JPL), I designed and led the development of the middleware for a key information management system for NASA's Mars Exploration Rover (MER) mission. I received several key NASA awards, including Space Act Board and Turning Goals into Reality. A documentary about the Opportunity rover: "Good Night Oppy".

Orion spacecraft. As a Senior Computer Scientist at the NASA Ames Research Center, I wrote software for the new Orion spacecraft that recently successfully launched, orbited the moon, and returned safely to Earth. It will soon take astronauts back to the moon and later to Mars.

CubeSats. I designed and managed the building of the Spacecraft System Integration Laboratory (SSIL) at the NASA Ames Research Center for the simulation of CubeSats orbiting in cluster formations and performing scatter-gather maneuvers. We installed Emulab locally in order to dynamically provision users with advanced graphics servers and up to 400 virtual machines in arbitrary user-specified network configurations.

Fusion energy research. The National Ignition Facility (NIF) at the Lawrence Livermore National Laboratory recently made a major scientific breakthrough -- more energy output from the system than energy put into it! I was the Enterprise Software Strategist for the project, where I helped design and develop a workflow system to consolidate and manage the scientific data generated by the laser firings.

Silicon Valley. I was a consulting Data Scientist at Mediar, a data analytics startup. As a Research Staff Member at the IBM Almaden Research Center in San Jose, I helped implement the Splash software platform that integrated multiple heterogeneous simulation, statistical, and data models in order to research the nation's obesity problem. I've been a software developer, project lead, and engineering manager at high-tech companies such as Hewlett-Packard (the HP 300 system; HP 1000 Pascal compiler; HP 9000 FORTRAN compiler), Sun Microsystems (Sun Common Lisp; the NeWS Toolkit), and Apple Computer Company (the Newton PDA).

Academics. I have taught software classes at Stanford University and at Santa Clara University, and I had a faculty appointment at the University of California at Santa Cruz. I started to teach part time at San José State University in 2008, then full time 2013 - 2021, and now part time again. I teach a variety of graduate and undergraduate courses in several departments. I have degrees in the Mathematical Sciences and in Computer Science from Stanford, where two of my physics professors each had a Nobel Prize. I am a Stanford Computing Pioneer.

Invited talks and interviews. I have invited and hosted pioneers in computer science and in the computer industry, including several Turing Award winners, to give weekly talks at SJSU. I was interviewed for the CCTV documentary "Internet Era".

U.S. patents. I am an inventor on seven U.S. patents.
The first two are for innovative web techniques at an early Internet startup:
6446098    6569208
The most recent five are for advanced data analytics at IBM Research:
9524326    9607067    9805145    9805143    10296519

My Erdős number is 5.

Classes I've recently taught at SJSU

DATA 220: Mathematical Models for Data Analytics (Python)
DATA 225: Database Systems for Analytics (SQL + Python)
CS 46B: Introduction to Data Structures (Java)
CS 144: Advanced C++ Programming
CS 146: Data Structures and Algorithms (Java)
CS 149: Operating Systems (C)
CS 151: Object-Oriented Design (Java)
CS 152: Programming Language Paradigms
CS 153: Concepts of Compiler Design (Java)
CS 154: Formal Languages and Computability
CS 160: Software Engineering (Java)
CS 174: Server-Side Web Programming (HTML + JavaScript + PHP)
CS 185C/CS 286: The History of Computing
CS 235: User Interface Design (JavaScript)
Please visit: CS 235 Data Visualization Projects
The History of Computing Speaker Series
Please visit: Recorded talks online
MISA Workshop: Relational Databases and SQL Programming (SQL)
Please visit: Introduction to SQL Queries
CMPE 131: Software Engineering I (Ruby on Rails)
CMPE 135: Object-Oriented Analysis and Design (C++)
CMPE 142: Operating Systems (C)
CMPE 152: Compiler Design (C++)
CMPE 180A: Data Structures and Algorithms in C++
CMPE 226: Database Systems (SQL + HTML + PHP)
CMPE 280: Web UI Design and Development (HTML + JavaScript)

DATAApplied Data Science
CSComputer Science
MISAManagement Information Systems Association
CMPEComputer Engineering

Books I've recently examined

Modern C, 3rd edition by Jens Gustedt
I teach classes that use Java, C++, and Python. But for my operating systems class, I use the venerable C language. This book covers the latest C23 standard with a modern perspective on how to use the language whenever compact, high performing code is needed. It's for programmers who must get closer to the hardware and understand more clearly what their programs are doing at run time.