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
131 DeBartolo Hall
Mailing List (Class)
cdt-30010-fa15-class-group@nd.edu
Mailing List (Staff)
cdt-30010-fa15-staff-group@nd.edu
IRC
#nd-cse on Freenode
Bitbucket
CDT-30010-FA15

Instructor

Instructor
Peter Bui (pbui@nd.edu)
Office Hours
M/W/F 2:00 PM - 4:30 PM, W 7:15 PM - 8:30 PM (La Fortune), and by appointment
Office Location
350 Fitzpatrick Hall

Teaching Assistants

Graduate Teaching Assistant
Louis Faust (lfaust@nd.edu)
Office Hours
6:30 PM - 8:30 PM Tuesday, 8:00 PM - 10:00 PM Wednesday
Office Location
La Fortune (East, West, 1st Floor)
Undergraduate Teaching Assistant
Megan Fink (mfink2@nd.edu)
Office Hours
8:30 PM - 10:30 PM Tuesday
Office Location
La Fortune (East, West, 1st Floor)

Help Protocol

  1. Think
  2. IRC
  3. Think
  4. Email
  5. Think
  6. Office
Unit Date Topics Assignments
Introduction 08/25 Introduction, Syllabus, Slides Reading 00
08/27 Programming, Python, Anaconda, Slides
Basic Syntax & Types 09/01 Arithmetic, Values, Types, Slides Reading 01
09/03 Variables, Expressions, Statements Notebook 00
Conditional Execution 09/08 Conditional and Alternative Execution, Slides Reading 02
09/10 Chained and Nested Conditionals, Quiz 1 Notebook 01
Iteration 09/15 Loops, Slides Reading 03
09/17 Patterns Notebook 02
Functions 09/22 Functions, Slides Reading 04
09/24 Arguments, Docstrings Notebook 03
Lists, Strings 09/29 Lists, Slides, Exercises Reading 05
10/01 Strings, Quiz 2 Notebook 04
Dictionaries, Sets 10/06 Dictionaries, Slides, Exercises Reading 06
10/08 Sets Notebook 05
Midterm 10/13 Review, Study Guide
10/15 Midterm
Fall Break
File I/O 10/27 Reading, Slides Reading 07
10/29 Writing Notebook 06
Data Manipulation 11/03 CSV, JSON, Slides Reading 08
11/05 Requests, Quiz 3 Notebook 07
Web Programming 11/10 HTTP, HTML, Tornado, Files Reading 09
11/12 Forms, Slides, Files Notebook 08
Security 11/17 Passwords, Cryptography
Image Processing 11/19 Representation, Manipulation, Slides Reading 10
11/24 Convolution, Filters Notebook 09
11/26 Thanksgiving
Artificial Intelligence 12/01 Connect-Four, Recursion, Quiz 4
12/03 Mini-max Notebook 10
12/08 Sprint
12/10 Contest Project
Final Exam 12/18 Final Study Guide

Coursework

Component Points
Readings Weekly reading assignments and corresponding writing prompts. 10 × 3
Notebooks Weekly programming assignments using Jupyter Notebooks. 10 × 12
Project Final programming project and presentation. 1 × 15
Quizzes Periodic quizzes. 4 × 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

Bitbucket Repository

All your Readings and Notebooks are to be submitted to your own private Bitbucket 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](http://disabilityservices.nd.edu/).

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.