CSE 10102/CDT 30020 is the second course of the Computing & Digital Technologies's core programming sequence. Building on your prior experience with the Python programming language, you will explore advanced programming paradigms such as regular expressions and object-oriented programming, familiarize yourself with elements of software engineering such as the command line interface, version control, development environments, and testing, and utilize web technologies such as SQL databases, JavaScript, and cloud-based services. To demonstrate your mastery of these skills and concepts, you will work on interdisciplinary team projects throughout the semester that apply your knowledge to problems related to the different CDT areas of focus.

Upon successful completion of this course, you will be able to:

  1. Navigate command-line based environments effectively and productively.
  2. Construct object systems to model complex systems, and to employ regular expressions to process large streams of data.
  3. Package and deploy software as stand-alone scripts, library packages, or web services.
  4. Utilize common software engineering tools and explain how they aid in the process of producing software.
  5. Develop applications that incorporate different web development technologies such as SQL databases, JavaScript, and cloud-based platforms.
  6. Describe the key components of a typical web application and how all the pieces fit together.

Class Information

T/TH 2:00 PM - 3:15 PM
DeBartolo Hall 125


Chris Forstall (cforstal@nd.edu)
Office Hours
Tues. 3:20 PM - 4:20 PM
Fri. 1:00 PM - 2:00 PM
and by appointment
Office Hours Location
Center for Digital Scholarship
(Hesburgh Library 130)

Teaching Assistants

Teaching Assistant
Nick Jones (njones7@nd.edu)
Office Hours
Wed. 5:00-7:00
Office Location
Center for Digital Scholarship
Teaching Assistant
Xueying Wang (xwang41@nd.edu)
Office Hours
Wed. 1:30-2:30
Office Location
Cushing 212

Help Protocol

  1. Think
  2. Slack
  3. Think
  4. Email
  5. Think
  6. Office
Unit Date Topics Assignment Due on
Introduction 01/17 Introduction, Syllabus, Linux Shell Homework 1 01/20
01/19 Vagrant, Git Notes
Packaging 01/24 Scripts, Modules Notes Homework 2 01/27
01/26 Packages Notes
Object-Oriented Programming 01/31 OOP Concepts Notes Homework 3 02/03
Project 1 02/02 Sprint
02/07 Sprint
02/09 Review Project 1 02/10
02/14 Checklist 1 Test 1
Databases 02/16 Databases, SQL Notes
02/21 SQLite with Python Notes Homework 4 02/24
02/23 Relational databases Notes
Server-Side Programming 02/28 HTTP, HTML Notes Homework 5 03/03
03/02 Tornado Notes
03/07 Tornado templates Homework 6 03/10
Project 2 03/09 Sprint
Spring Break
Project 2 03/21 Sprint
03/23 Review Project 2 03/24
03/28 Checklist 2 Test 2
Client-Side Programming 03/30 HTML + CSS
04/04 Bootstrap Notes Homework 7 04/07
04/06 JavaScript Notes
04/11 AJAX Notes Homework 8 04/14
Project 3 04/13 Sprint
04/18 Sprint
04/20 Review Project 3 04/21
04/25 Checklist 3 Practice code Test 3
Final Project 04/27 Planning, Design Homework 9 04/28
05/02 Sprint
05/08 Final Project Presentations


Component Points
Homework Weekly reading assignments and corresponding writing prompts. 9 × 5
Projects Focused group programming projects. 30 + 40 + 40
Tests Examinations after each project. 25 + 35 + 35
Final Project Open-ended group programming project. 50
Total 300


Grade Points Grade Points Grade Points
A 280-300 A- 270-279
B+ 260-269 B 250-259 B- 240-249
C+ 230-239 C 220-229 C- 210-219
D 180-209 F 0-179

GitLab Repository

All your Homework and Projects are to be submitted to your own private GitLab repository.

  • Homework is assigned on a weekly basis. It will generally cover topics for both Tuesday and Thursday. I encourage you to do the readings and to try to answer the questions before class. Your responses must be uploaded by 10:00 pm on Friday unless otherwise specified.
  • Projects should be uploaded before 10:00 pm on the Friday following the final in-class work period. Only one project will be graded per group; all members are expected to contribute.



You are expected to attend and contribute regularly in class. This means answering questions in class, participating in discussions, and helping other students. Foreseeable absences should be discussed with the instructor ahead of time.

You are equally expected to follow and to use the class Slack team. If you have a question, ask on Slack first. That way everyone can benefit from the answer. If someone has a problem that you can help with, chime in.

Late Work

In the case of a serious illness or other excused absence, as defined by university policies, coursework submissions will be accepted late by the same number of days as the excused absence.

Otherwise, there is a penalty of 25% per day late (except where noted). You may submit some parts of an assignment on time and some parts late. Each submission must clearly state which parts it contains; no part can be submitted more than once.

Honor Code

All work that you submit must be your own. Collaboration is encouraged but must be disclosed by all parties. Print or online resources are allowed, but must be disclosed. However, you may not copy-paste solutions from other current or past students, or any other source.

As a rule of thumb, you should be able to explain any written response or code you submit, and to reproduce it in your own words.

Students with Disabilities

Any student who has a documented disability and is registered with Disability Services should speak with the professor as soon as possible regarding accommodations. Students who are not registered should contact the Office of Disabilities.


All of the course textbooks are freely available online.


All of the course software is freely available online.

  • Python

    The official Python programming language website.

  • Anaconda

    A large and relatively complete Python distribution for large-scale data processing, predictive analytics, and scientific computing.

  • VirtualBox

    Free software for creating and running virtual machines on your personal computer.

  • Vagrant

    A set of scripts to easily set up and maintain virtual machines from the command-line. In conjunction with VirtualBox, you can use this to create carefully-controlled, virtual Linux environments for project development.


These are additional resources and references that may be useful.


Help on git commands and techniques

Web Programming

Helpful references for authoring HTML, CSS, JavaScript and more.

  • W3Schools

    A really useful reference site for HTML, CSS, JavaScript, Bootstrap

  • W3C HTML5 Validator

    Paste in your own HTML or the URL of a site on the web to check against the language standards and see any bugs.

  • Bootstrap

    Official website for Bootstrap. Download your own copy, check the docs, look at examples.

  • Font Awesome

    Free, useful icons to spruce up your site.

  • Tornado

    Official site for the Tornado web framework.

  • JQuery

    Ancillary JavaScript functions to make your life easier.