top of page
Software Engineering for Data Scientists

Asynchronous

-

This program is included with Career Launch Cohort Enrollment and Erdős Institute Alumni Club Membership at no additional cost.
erdosOspin.gif

Checking your registration status...

To access the program content, you must first create an account and member profile and be logged in.

You are registered for this program.

Registration Deadlines

-

-

-

Category

Launch, Supplemental, Self-Directed, Mini-Course

Overview

The Software Engineering for Data Scientists course is meant to help data scientists write production ready code as well as gain familiarity with the tools used to make models available to their users. The core idea we will be exploring is making code robust and re-usable across a team. This course can also serve as an introduction toward ideas used in ML Ops and Data Engineering.

Slack

Click here to be invited to the slack organization: The Erdős Institute

Click here to access the slack cohort channel: #slack-cohort-channel

Click here to access the slack program channel: #slack-program-channel

calendar-icon.png

Click here to download the Events & Deadlines .ics calendar file

Organizers, Instructors, and Advisors

matt_osborne.png

Steven Gubkin

Head of Training and Assessment

Office Hours:

By appointment only

Email:

Preferred Contact:

Slack

Your primary contact for GitHub access.

matt_osborne.png

Kevin Nowland

Lead instructor, ML Ops Engineer

Office Hours:

Intermittent Thursday Afternoons

Email:

Preferred Contact:

Slack

Please reach out on slack if you have any questions about the content in this course!

Objectives

After completing this course, you will be able to the following:
- Understand common tools used to deploy models for real-time inference
- Improve your code's robustness through unit testing
- Improve your code's readability through using linters and type checking
- Use basic command line commands
- Be able to implement a simple continuous integration pipeline using GitHub Actions

First Steps/Prerequisites

  • Figure out how to access a terminal emulator, e.g., the Terminal program on Mac OS / Ubuntu 
  • If using Windows, enable the Windows Subsystem for Linux and access a terminal emulator 
  • Download pyenv and use it to install python 3.10.x
First Steps

Program Content

I'm a paragraph. Click here to add your own text and edit me. It's easy.

Course materials are available on github through the following link:

25231-github-cat-in-a-circle-icon-vector-icon-vector-eps.png
Request Access to GitHub

github message for user

Program Content

Textbook/Notes

Note: our video player does not support playback speed options. You can find a third party browser extension which will allow you to modify video playback speed. For example, this one works for Chrome: video-speed-controller. If you would prefer to avoid a browser extension you can manually modify the playback speed in the javascript console as well: Speed up any HTML5 video player!

Intro to the CLI - part 1

Getting ready to code

We’ll be talking about the different shells that allow you to interact with your computer, navigating the filesystem, and basic ways to manipulate files.

Slides
Transcript
Code

Dependency management

Getting ready to code

How to setup a python environment with an emphasis on communicating what the environment is across a team

Slides
Transcript

Unit testing

Code quality

We talk about refactoring code to by DRY, the scope of functions, and unit testing some (but not all!) of them

Slides
Transcript

Continuous integration

Code quality

How do we enable short lived branches while maintaining code quality? Continuous integration tools can help

Slides
Transcript

Intro to the CLI - part 2

Getting ready to code

We'll talk about configuring your shell, file ownership and permissions, how to talk to other computers, and other useful command line tools.

Slides
Transcript
Code

Code style

Code quality

Taking to heart the truism that each line of code will be read more often than it is written, we explore python style as commonly used in the greater python community

Slides
Transcript

Type hints

Code quality

In this video we’re going to talk about type hints, which is a way to help you and your teammates know what objects a function should be returning and what types of objects a function requires.

Slides
Transcript

Object Oriented Programming

Theory

This video will focus on object oriented programming, we’ll talk about the Liskov substitution principle, and then talk about some drawbacks to using an object oriented programming style.

Slides
Transcript

Text Editors

Getting ready to code

A brief introduction to the command line editor vim and compare with VS Code, a full IDE.

Slides
Transcript
Code

Packages

Code quality

We present one way to write a pip-installable python package, refactoring code written in the previous video.

Slides
Transcript

Trunk based development

Code quality

How do we incorporate changes to a repository when multiple team members are working on the repository at once?

Slides
Transcript

Functional Programming

Theory

In functional programming, functions are the first class objects. In addition, data is usually taken to be immutable. In this video we explore the consequences of these ideas.

Slides
Transcript

Project/Homework Instructions

I'm a paragraph. Click here to add your own text and edit me. It's easy.

Project/Team Formation
Project Submission
Projects README

Schedule

Click on any date for more details

Orientation & Setup

Phase 1: Instruction and Project Completion

Project Review & Judging

Phase 2: Intense Interview Prep & Career Connections

Project/Homework Deadlines

©2017-2025 by The Erdős Institute.

bottom of page