Curriculum

MSSE is an online professional masters program that prepares students for careers in computational science, data science, machine learning, and software engineering. The program is designed to train students with backgrounds in chemistry, physics, biology, computer science, or from other physical science disciplines. The MSSE provides students with the tools, software engineering practices, leadership, management, and entrepreneurial skills needed to create or lead science- or engineering-based enterprises.

The MSSE program is available both full-time and part-time. MSSE launches with a two-week, in-person bootcamp in Berkeley, on the foundations of programming and software engineering. This bootcamp kicks off an educational journey that students experience together as a cohort. The 29-units of online coursework include a capstone project with an industrial or government lab partner.

See Part Time Schedule
See Full Time Schedule

MSSE 1-year, Full-Time Course Schedule

Fall Bootcamp
CHEM 280: Foundations of Programming and Software Engineering
*On-Campus, before the start of the Fall Semester
2 Units
2 Week Bootcamp
Fall Semester
15 Weeks
CHEM 274A: Introduction to Programming Languages – C++ and Python
3 Units
CHEM 274B : Introduction to Software Engineering
3 Units
CHEM 278: Ethics in Molecular Science and Software Engineering
1 Units
DATA C200: Principles and Techniques of Data Science
3 Units
CHEM 277B: Machine Learning Algorithms
3 Units
Spring Bootcamp
CHEM 282: Leadership Bootcamp
*On-Campus, before the start of the Spring Semester
2 Units
2 Week Bootcamp
Spring Semester
CHEM 281 : Sofware Engineering for Scientific Computing
3 Units
CHEM 279 : Numerical Algorithms Applied to Computational Chemistry
3 Units
CS 267 : Applications of Parallel Computing
3 Units
CHEM 283 : Capstone Project
3 Units

MSSE Courses

CHEM 280: Foundations of Programming and Software Engineering This course provides an overview of topics relevant to programming and creating software projects. The course will be taught in collaboration with members of the Molecular Sciences Software Institute (MolSII). Students will learn basic syntax, use cases, and ecosystems for Python and C++. Students will become familiar with tools and practices commonly used in software development such as version control, documentation, and testing. Central to this course is a hands-on molecular simulation project where students work in groups to create a software package using concepts taught in the course.

View Syllabus
2 units
CHEM 274A: Introduction to Programming Languages – C++ and Python This course provides in-depth coverage of programming concepts and techniques required for scientific computing, data science, and high-performance computing using C++ and Python. The course will compare and contrast the functionalities of the two languages. Topics include classes, overloading, data abstraction, information hiding, encapsulation, file processing, exceptions, and low-level language features. Numerous exercises based on molecular science problems will provide the hands-on experience needed to learn these languages. This course serves as a prerequisite to later MSSE courses: Data Science, Machine Learning Algorithms, Software Engineering for Scientific Computing, Numerical Algorithms Applied to Computational Quantum Chemistry, and Applications of Parallel Computers.

View Syllabus
3 units
CHEM 274B : Introduction to Software Engineering  This course will advance students' understanding of fundamental knowledge and techniques for developing complex software. Students will gain an in-depth view of computer system architecture as well as abstraction techniques as means to manage program complexity. Students will collaboratively develop a software engineering package, thus gaining experience in all aspects of the software development process from the feasibility study to the final delivery of the product. This course is a prerequisite to most MSSE courses.

View Syllabus
3 units
DATA C200: Principles and Techniques of Data Science Explores the data science lifecycle: question formulation, data collection and cleaning, exploratory, analysis, visualization, statistical inference, prediction, and decision-making. Focuses on quantitative critical thinking and key principles and techniques: languages for transforming, querying, and analyzing data; algorithms for machine learning methods: regression, classification, and clustering; principles of informative visualization; measurement error and prediction; and techniques for scalable data processing. Research term project.

View Syllabus
3 units
CHEM 278: Ethics in Molecular Science and Software Engineering  This course will expose students to applied ethics in professional ethics, information technology, intellectual property, and corporate ethics.

View Syllabus
1 unit
CHEM 277B: Machine Learning Algorithms An introduction to mathematical optimization and statistics and "nonalgorithmic" computation using machine learning. Machine learning prerequisites are introduced including local and global optimization, various statistical and clustering models, and early metaheuristic methods such as genetic algorithms and artificial neural networks. Building on this foundation, current machine learning techniques are covered including Deep Learning networks, Convolutional neural networks, Recurrent and long short-term memory (LSTM) networks, and support vector machines and Gaussian ridge regression. Various case studies in applying optimization, statistical modeling, and machine learning methods as classification and regression tasks in different scientific software areas.

View Syllabus
3 units
CHEM 281:  Software Engineering for Scientific Computing  The course covers computer architecture and software features that have the greatest impact on performance. It addresses debugging and performance tuning, detecting memory and stack overwrites, malloc corruption, hotspot, paging, and cache misses. A toolbox with common algorithms: sorting, searching, hashing, trees, and graph traversing is followed by common patterns used in object-oriented design. It describes programming paradigms, dynamic libraries, distributed architectures, and services. Lectures on linear algebra and performance libraries are provided as background for future courses. HPC paradigms and GPU programming are introduced. Software packaging, extensibility, and interactivity are followed by team development, testing, and hardening.

View Syllabus
3 units
CHEM 279: Numerical Algorithms applied to Computational Quantum Chemistry  An introduction to numerical algorithms, their application to computational quantum chemistry, and best practices for software implementation, and reuse. This course covers a toolbox of useful algorithms from applied mathematics that are used in physical simulations. They are illustrated via computer implementation of density functional theory for modeling chemical reaction mechanisms from quantum mechanics. Topics covered include local optimization, numerical derivatives, and numerical integration, dense linear algebra, the symmetric eigenvalue problem, the singular value decomposition, and the fast Fourier transform. More specialized topics as time permits. Students are guided through principles of procedural and object-oriented programming in C++, as well as the usage of efficient numerical libraries.

View Syllabus
3 units
COMPSCI C267: Applications of Parallel Computers Models for parallel programming. Overview of parallelism in scientific applications and study of parallel algorithms for linear algebra, particles, meshes, sorting, FFT, graphs, machine learning, etc. Survey of parallel machines and machine structures. Programming shared- and distributed-memory parallel computers, GPUs, and cloud platforms. Parallel programming languages, compilers, libraries, and toolboxes. Data partitioning techniques. Techniques for synchronization and load balancing. Detailed study and algorithm/program development of medium-sized applications.

View Syllabus
3 units
CHEM 283: MSSE Capstone Project The main course objective is to provide MSSE students with a multifaceted experience managing a project of their choice involving the application and development of high-end computational software for Computational Sciences with an emphasis on Molecular Sciences. Students will exercise their leadership and team-building skills through individual class assignments, peer reviews, and a final Capstone project report. This course is designed to provide students with tools and practices for designing project deliverables, planning and meeting project deadlines, giving presentations, writing technical communications, and providing constructive feedback to peers. They will be supervised to complete building a professional MSSE software portfolio, which meets the best software engineering practices.

View Syllabus
3 units
CHEM 282: Leadership Bootcamp This boot camp for the Master of Molecular Science and Software Engineering program is a two-week intensive course that introduces program participants to the leadership, management, and entrepreneurial skills necessary in today’s professional environment. Using the capstone project as a baseline, this course aims to provide program participants an understanding of the key aspects of management and leadership disciplines; team and organization dynamics; leading and participating in cross-functional teams; engineering economic, finance, and accounting concepts; effective communication skills, and project management.

View Syllabus
2 units