General Information

Objective of the course

The goal of this course is to teach you to think like a computer scientist. This way of thinking combines some of the best features of mathematics, engineering, and natural science. Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating tradeoffs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.
The single most important skill for a computer scientist is **problem solving**. Problem solving means the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That's why this course is called, "Introduction to programming, using Python".
On one level, you will be learning to program, a useful skill by itself. On another level, you will use programming as a means to an end. As we go along, that end will become clearer.

About the online content

This course is based on Drs. Punch and Enbody text, The Practice of Computing Using Python. This online material is a supplement to the book: read a topic, view videos on the topic, try it out. (We have not attempted to copy the 700+ pages of the book into a series of web pages – a foolish endeaver – so these online materials are not a substitute for reading the book.)

Drs. Punch and Enbody have combined over 50 years of teaching with Python to create an introduction to programming using Python. Therefore, you will be seeing lots of videos from both in this class along with some videos from Dr. Zaabar in the course webpage.

All lectures are distributed via reading assignments and pre-recorded videos available each week on the course website. You are welcome to work ahead of the schedule. Watching the videos closely (I recommend taking notes) is essential to being able to complete the assignments and exams in this course.

Our goal: when a student is presented with a problem, their response will be "I can write a program to do that!"

Students will learn about the design, implementation and testing of programs to solve problems with an emphasis on data manipulation using real-world, practical examples. Students will learn to read and write code as well as identify and rectify errors (debigging).

Our Approach

  • Read a topic in the text.
  • View a set of short videos demonstrating use (each video is less than 10 minutes).
  • Try it out.
  • "Rinse and repeat."

Topics

Given our focus on data manipulation, we cover the organization of data into data structures (strings, lists, dictionaries, tuples, sets) and ways to manipulate the data (selection, iteration, methods, etc.). You need ways to get and report data (file I/O), and ways to organize your programs (functions, OOP). Along the way you will learn about user-defined classes.

Practice

Programming requires practice. You can't play the violin by just watching the greatest musicians on YouTube. You can't be Lionel Messi by just watching the world cup on TV this year. Likewise you can not learn to program by watching someone else program, even if they are explaining it every step of the way. The more you practice the better you get, and it will show in your exam performance.

There are multiple ways to practice: After reading a chapter, Codio has questions assigned to practice that chapter's topics. You can start working on them from the start of the week. You do not have to finish all of them at once. You can submit as many times as you want before the deadline. Then D2L has pre-lab questions to prepare for the weekly lab exercise. Then there is a weekly programming assignment. Skip the reading or the practice and you will be less prepared for the programming assignment.

Getting Started

If you don't have Python on your system, download Python from here: Python. (We use Python 3.x for x >= 10.)

Organization

Start with my "course mechanics" video. (Here is the exoskeleton video I mention, a robot in use, and a longer look at the practicality of an exoskeleton.)
If you haven't done so, a gentle introduction to programming can be found here: Hour of Code.

  1. Week0: Get Python (before classes starts)
  2. Week1: Beginnings and Control
  3. Week2: Strings and Functions
  4. Week3: Files & Exceptions I and Lists & Tuples
  5. Week4: Algorithms/Program Development and Midterm Exam
  6. Week5: More on Functions and Mutables and Dictionaries & Sets
  7. Week6: Classes Introduction and scope and More on Classes
  8. Week7: Last week and Final Exam