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.
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).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.
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.If you don't have Python on your system, download Python from here: Python. (We use Python 3.x for x >= 10.)
Start with our "course mechanics" video.
If you haven't done so, a gentle introduction to programming can be found here: Hour of Code.