Introduction to Computers in Science and Engineering

By Sameer Bhatnagar
Cohort 2019-2020

Artificial Intelligence

Course 360-420 is a multi-disciplinary Science option called “Introduction to Computers in Science and Engineering.”  Students learn not only how to read and write computer code, but also apply those skills to solve science problems that they have encountered where the analytical solution is intractable (e.g., tracking evolution of an epidemic, modeling response of a building to an earthquake, etc.)

I put together this module in order to take a step back to give students a bigger picture of best practices in programming for research in science and engineering. We explore how reproducible research is critical to projects where data and models can become powerful yet opaque. We dive into version control systems, and how they foster collaboration and enable creativity in large complex projects. We dig into object-oriented programming, so as to get familiar with how to leverage the application programming interfaces (APIs) of larger open source projects.


This course is often the first experience with programming for our students, and thus it can be a lot to cover in a few weeks. I am still working on striking the right balance of high-level concepts and hands-on activities that hone practical skills. Please do not hesitate to send some feedback!

Reproducible Research

We will delve deeper into what we mean by “Reproducible Research”, and some of the best practices that scientists use to better document and share their work.

Exploratory Data Analysis

We will quickly recap the intro to linear regression from the homework from last class, and then spend some time manually digging through some data to better understand the first step in any Machine Learning Project: Exploratory Data Analysis.

Machine Learning and Object-Oriented Programming

Before looking at any machine learning (ML) algorithms, we need to tool up. We will explore how Object-Oriented Programming (OOP) can help us build new data types from those that are native to our programming language. What’s more, we will see the beginnings of how an Application Program Interface (API) can help us leverage other people’s code, to do more with less.

Frontiers in Machine Learning

We will explore some of the most influential ideas in the field of machine learning over the past twenty years.