General Information

Course Objectives

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.)

You will be seeing lots of videos from both Drs. Punch and Enbody in this class along with some videos from Dr. Zaabar and Dr. Khalifeh 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, however, some videos will be updated as the semester progresses. 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 (debugging).

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, matplotlib), 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 be Simone Biles by just watching her during the Olympics. 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 and quiz 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 before your lab. 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 our "course mechanics" video.
If you haven't done so, a gentle introduction to programming can be found here: Hour of Code.

  1. Week0 (before classes starts): Get Python
  2. Week1: Beginnings
  3. Week2: Control
  4. Week3: Strings
  5. Week4: Functions
  6. Week5: Files & Exceptions I and Exam 1 (see the syllabus)
  7. Week6: Lists & Tuples
  8. Week7: More on Functions and Mutables
  9. Week8: Dictionaries & Sets
  10. Week9: Algorithms and Program Development
  11. Week10: Classes Introduction
  12. Week11: Exam 2 (see the syllabus)
  13. Week12: Scope
  14. Week13: More on Classes
  15. Week14: More Files & Exceptions
  16. Week15: Final Exam First chance