CSE 10102/CDT 30020 is the second course in the core programming sequence in the Computing & Digital Technologies Minor. 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, students will be able to:
Navigate command-line based environments effectively and productively.
Construct object systems to model complex systems, and to employ regular expressions to process large streams of data.
Package and deploy software as stand-alone scripts, library packages, or web services.
Utilize common software engineering tools and explain how they aid in the process of producing software.
Develop applications that incorporate different web development technologies such as SQL databases, JavaScript, and cloud-based platforms.
Describe the key components of a typical web application and how all the pieces fit together.
Unit | Date | Topics | Assignment |
---|---|---|---|
Unix | 01/12 | Introduction, Syllabus, Unix Shell Slides Slides | Reading 00 |
01/14 | Raspberry Pi, Git Slides | ||
Packaging | 01/19 | Scripts, Modules Slides | Reading 01 |
01/21 | Packages | ||
Object-Oriented Programming | 01/26 | OOP Concepts Slides | Reading 02 |
Project 01: DrawIt | 01/28 | Sprint | |
02/02 | Sprint | ||
02/04 | Study Guide 01 Debriefing 01 | Project 01 | |
Server-side Programming | 02/09 | HTML, HTTP Slides | Reading 03 |
02/11 | Tornado Files | ||
Databases | 02/16 | Databases, SQL Slides | Reading 04 |
02/18 | Python, SQLite Files | ||
02/23 | Relational Databases Slides | Reading 05 | |
Project 02: SearchIt | 02/25 | Sprint | |
03/01 | Sprint | ||
03/03 | Sprint | ||
Spring Break | |||
Project 02: SearchIt | 03/15 | Tornado Templates | Reading 06 |
03/17 | Review | Project 02 | |
03/22 | Study Guide 02 Debriefing 02 | ||
Client-side Programming | 03/24 | HTML, CSS Slides | |
03/29 | Bootstrap Slides | Reading 07 | |
03/31 | JavaScript Slides | ||
04/05 | AJAX Slides Files | Reading 08 | |
Project 03: PlayIt | 04/07 | Sprint | |
04/12 | Sprint | ||
04/14 | Sprint | ||
04/19 | Review | ||
04/21 | Study Guide 03 Debriefing 03 | Project 03 | |
Final Project | 04/26 | Planning, Design | Reading 09 |
05/06 | Project Presentations |
Component | Points |
---|---|
Readings Weekly reading assignments and corresponding writing prompts. | 8 × 5 |
Projects Focused group programming projects. | 30 + 40 + 40 |
Debriefings Examinations after each project. | 25 + 35 + 35 |
Final Project Open-ended group programming project. | 40 + 15 |
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 |
All your Readings and Projects are to be submitted to your own private Bitbucket repository.
Students 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.
Notre Dame has implemented an Echo360 classroom recording system. This system allows us to record and distribute lectures to you in a secure environment. You can watch these recordings on your computer, tablet, or smartphone. The recordings can be accessed within Sakai. Look for the tool labeled "Echo360 ALP" on the left hand side of the course.
Because we will be recording in the classroom and/or using an active learning environment, your questions and comments may be recorded. (Video recordings typically only capture the front of the classroom.) If you have any concerns about your voice or image being recorded, please speak to me to determine an alternative means of participating. No content will be shared with individuals outside of your course without your permission except for faculty and staff that need access for support or specific academic purposes.
These recordings are jointly copyrighted by the University of Notre Dame and your instructor. Posting them to other websites, including YouTube, Facebook, Vimeo, or elsewhere without express, written permission may result in disciplinary action and possible civil prosecution.
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.
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 look at solutions from other current or past students, or any other source.
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.
Automate the Boring Stuff with Python
A book dedicated to teaching beginnings how to program in Python. The website includes a variety of extra resources including videos.
Python for Informatics: Exploring Information
A set of course materials for introducing Python to informaticians. The website includes a variety of resources including multiple versions of the book, slides, videos, audio, and more. The book is based on Think Python: How to Think Like a Computer Scientist.
A free book on programming using the Python language.
Python Scientific Lecture Notes
A collection of lecture notes used to train scientists interesting in utilizing Python in their workflows. The notes are available in PDF and HTML format.
The Art and Craft of Programming
A book that provides an overview of the basics of programming in Python.
All of the course software is freely available online.
The official Python programming language website.
A large and relatively complete Python distribution for large-scale data processing, predictive analytics, and scientific computing.
A free lightweight Python distribution geared towards scientific computing.
Python(x,y) is a free scientific and engineering development software for numerical computations, data analysis and data visualization.
A free open-source mathematics software system.
These are additional resources and references that may be useful.
The documentation included with Python 2.7, which is the version we will be using.
An interactive website you can use to visually trace through the execution of your Python code.
PythonBooks: The best free Python resources
A collection of free Python books.
An incomplete Wiki Book about programming in Python.
A collection of tutorials on how to use a variety Python's many included modules.
A blog filled with tutorials and lessons on Python and its various libraries.
Getting started with Python in HPC
A collection of links to various Python resources related to high performance computing.