CSE 10101/CDT 30010 is the first course in the core programming sequence in the Computing & Digital Technologies Minor. Utilizing the Python programming language, you will explore and practice foundational programming concepts such as syntax, variables, conditional execution, iteration, functions, and data structures such as strings, lists, and dictionaries. To develop a greater understanding of the different tracks in the CDT minor, you will apply your programming skills to solving problems related to User Interface and Experience, Cyber Safety and Security, Digital Humanities, Digital Arts, Cognitive Science, and Technology Development and Management.

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

  1. Define common computing and programming terms and concepts.

  2. Employ common programming patterns and abstractions to solve problems.

  3. Choose appropriate data structures to develop efficient applications.

  4. Discuss the trade-offs of different programming strategies and techniques.

  5. Trace the execution of programming code, recognize errors, and correct bugs.

  6. Construct Python code to solve problems and automate processes in different domains and disciplines.

Class Information

Lecture
T/TH 2:00 PM - 3:15 PM
Location
136 DeBartolo Hall
Mailing List (Class)
cdt-30010-fa16-class-list@nd.edu
Mailing List (Staff)
cdt-30010-fa16-staff-list@nd.edu
Slack
#cdt-30010-fa16
GitLab
nd-cdt-30010-fa16
Galleries
Notebook 04

Instructor

Instructor
Peter Bui (pbui@nd.edu)
Office Hours
M/W/F 2:00 PM - 4:30 PM and by appointment
Office Location
350 Fitzpatrick Hall
Instructor
Shreya Kumar (skumar5@nd.edu)
Office Hours
T/TH 11:00 AM - 1:30 PM, 3:30 PM - 4:30 PM
Office Location
384D Fitzpatrick Hall

Teaching Assistants

Teaching Assistant
Mimi Chen (mchen6@nd.edu)
Office Hours
T 7:00 PM - 9:00 PM
Office Location
Center for Digital Scholarship (131A Conference Room)
Teaching Assistant
Borah Chong (bchong@nd.edu)
Office Hours
M 8:00 PM - 10:00 PM
Office Location
Center for Digital Scholarship (131A Conference Room)
Teaching Assistant
Nick Jones (njones7@nd.edu)
Office Hours
W 11:30 AM - 1:30 PM
Office Location
Starbucks (La Fortune)
Teaching Assistant
Xueying Wang (xwang41@nd.edu)
Office Hours
T 12:00 PM - 2:00 PM, W 10:00 AM - 12:00 PM
Office Location
213 Cushing

Help Protocol

  1. Think
  2. Slack
  3. Think
  4. Email
  5. Think
  6. Office
Unit Date Topics Assignment
Introduction 08/23 Introduction, Syllabus Slides Reading 00
08/25 Programming, Python, Anaconda Slides Notebook 00
Basic Syntax & Types 08/30 Arithmetic, Values, Types Slides Notes Reading 01
09/01 Variables, Expressions, Statements Notes Notebook 01
Conditional Execution 09/06 Conditional and Alternative Execution Slides Notes Reading 02
09/08 Chained and Nested Conditionals Checklist 01 Notes Quiz 01 Notebook 02
Iteration 09/13 Loops Slides Notes Reading 03
09/15 Patterns Notes Notebook 03
Functions 09/20 Functions Slides Notes Reading 04
09/22 Arguments, Docstrings Notes Notebook 04
Lists, Strings 09/27 Lists Slides Notes Reading 05
09/29 Strings Checklist 02 Notes Quiz 02 Notebook 05
Dictionaries, Sets 10/04 Dictionaries Slides Notes Reading 06
10/06 Sets Notes Notebook 06
Midterm 10/11 Review Checklist Notes
10/13 Exam 1
Fall Break
File I/O 10/25 Reading Slides Notes Reading 07
10/27 Writing Notes Notebook 07
Data Manipulation 11/01 CSV Notes Reading 08
11/03 JSON, Requests Notes Notebook 08
Image Processing 11/08 Representation, Manipulation Slides Notes Reading 09
11/10 Processing Checklist 03 Notes Quiz 3 Notebook 09
Artificial Intelligence 11/15 Twitter Bot Reading 10
11/17 Connect 4 Notes Notebook 10
11/22 Battle Royale Project 01
11/24 Thanksgiving
Web Programming 11/29 HTML, Tornado Slides Notes Reading 11
12/01 Forms Notes
12/06 Sprint
12/08 Presentations Project 02
Final 12/12 CheckList Exam 2

Coursework

Component Points
Readings Weekly reading assignments and corresponding writing prompts. 10 × 3
Notebooks Weekly individual programming assignments using Jupyter Notebooks. 10 × 12
Projects Collaborative group programming projects. 2 × 15
Quizzes Periodic quizzes. 3 × 15
Exams A midterm and a comprehensive final exam. 30 + 45
Total 300

Grading

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 Readings and Notebooks are to be submitted to your own private GitLab repository.

  • Readings are due at midnight on the night before the day assigned in the schedule above (ie. Monday → Tuesday).
  • Notebooks are due at midnight on the night the day assigned in the schedule above (ie. Thursday → Friday).

Policies

Participation

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.

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 look at solutions from other current or past students, or any other source.

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 Disability Services.

Textbooks

All of the course textbooks are freely available online.

### Software All of the course software is freely available online. - [Python] The official Python programming language website. - [Anaconda](https://store.continuum.io/cshop/anaconda/) A large and relatively complete Python distribution for large-scale data processing, predictive analytics, and scientific computing. - [Enthought Python Distribution](http://www.enthought.com/products/epd_free.php) A free lightweight Python distribution geared towards scientific computing. - [PythonXY](http://code.google.com/p/pythonxy/) Python(x,y) is a free scientific and engineering development software for numerical computations, data analysis and data visualization. - [Sage Math](http://www.sagemath.org/) A free open-source mathematics software system.
### References These are additional resources and references that may be useful. - [Python 2.7 Documentation](http://docs.python.org/2.7/) The documentation included with [Python] 2.7, which is the version we will be using. - [Online Python Tutor](http://pythontutor.com/) An interactive website you can use to visually trace through the execution of your [Python] code. - [PythonBooks: The best free Python resources](http://pythonbooks.revolunet.com/) A collection of free Python books. - [Python Programming](http://en.wikibooks.org/wiki/Python_Programming) An incomplete Wiki Book about programming in [Python]. - [Python Module of the Week](http://www.doughellmann.com/PyMOTW/contents.html) A collection of tutorials on how to use a variety [Python]'s many included modules. - [Python For Beginners](http://www.pythonforbeginners.com/) A blog filled with tutorials and lessons on Python and its various libraries. - [Getting started with Python in HPC](http://andy.terrel.us/blog/2012/09/27/starting-with-python/) A collection of links to various Python resources related to high performance computing.