Computer programming is a language for communicating with computers. It is completely different from human language, and the way how computers think is completely different from the way how human think. There are so many things you can do with computers these days, but what computers can actually understand is very limited. Therefore, learning computer programming involves learning how to write computer-understandable code (text) using limited instructions, variables, and logics which computers can understand.

Computer programming is also about problem-solving. We need to break down a problem into smaller pieces, to develop solutions for those sub-problems, and to combine them together to address the overall challenge. As Steve Jobs, the visionary founder of Apple Computer said, "Everybody in this country should learn to program a computer... because it teaches you to think."

This course will provide an introduction to programming using the Python programming language. You will learn how to use Python and its syntax and features. You will also learn some very fundamental things to learn programming. You will learn the basics of how computers work. You will also learn about data representations and structures. You will learn how to control flow including conditionals and iteration. You will also learn design techniques, best practices, and debugging methods.

However, this course not only introduces concepts but also provides opportunities for hands-on practice through in-class exercises and homework. The design of this course follows the "active learning" philosophy. Learning programming is similar to learning how to ride a bicycle. No matter how many theories are heard and understood, it is most important to actually do the riding by trials and errors. The in-class exercises will give you the opportunity to build a simple program, and the assignments will give you the opportunity to reinforce your understanding of the various concepts you learned through lectures.

Please be aware that this class will require students to invest a significant of time and efforts to succeed. There are required readings in our text book, in-class exercises, homework assignments, and a final exam. Especially, please do not wait until the last minute to complete your assignments. There would be always some errors you would not expect. If you do, you may find that you simply don't have enough time to do the required work.


The organization for this course will adhere closely to the required textbook "Starting out with Python", Fourth Edition, by Tony Gaddis (published by Pearson). ISBN 978-0134444321. This book is referenced as SOWP elsewhere. Copies of the textbook will be available online or in the campus bookstore.



Class participation is a key to your success in this course. Students are expected to come to be engaged (e.g., complete required reading before the class) and to participate in class discussion by asking questions and expressing their idea. Sharing your view with others is an important part of your education. It will broaden your understanding of the material and help you build confidence. In addition:

  • Students are expected to attend every class. Missing up to two classes during the semester due to important reasons (e.g., travel, sickness) is fine. However, if you expect to miss class more than twice during the semester, please notify the instructor prior to missing class. Of course, attendance factors into your participation grade.
  • If you don't understand something from class, ask questions! You can ask in class, you can stop by my office during office hours, or you can ask on the class discussion forum on Piazza (see here for more information).
  • "Quality is better than quantity." Class participation is part of your grade for this course.


Assignments are due by 10 AM on the day they are due unless otherwise specified. Assignments are to be submitted using Sakai unless instructed otherwise. Submission instructions will be included with each assignment description.

Late assignments will be penalized 10% for each day late up to a maximum of three days. A "day" here denotes a 24 hour period, or fraction thereof, after the due date. For example, a late assignment turned in 25 hours late will be penalized as two days late. No assignments will be accepted if more than 3 days (72 hours) late.

Please start early and ask questions. Many assignments may turn out to be more time consuming than your expectation. It is strongly recommended to start working on assignments as soon as they are assigned. In this way, you'll have time to ask questions and complete your assignment before the due date. I would not have time to help if you asked late.

If you have special circumstances that would make it impossible to submit by the due, contact the instructor as soon as possible. The exceptions can be considered on a case-by-case basis. When considered appropriate, limited extensions may be granted. Exceptions are much less likely to be provided if requests for accommodation are not made in a timely fashion.

Honor Code

You are encouraged to learn from each other. However, all the work you hand in must be your own. All assignments and exams are expected to be completed individually. This means that you cannot look at another student's code and copy or re-structure it as your own. Students are expected to adhere to the UNC Honor Code which is strongly effective across all assignments and exams.


Your grade for this course will be determined by a combination of three distinct elements: programming assignments, exams, and class participation. The approximate contributions of these three elements to your grade are as follows:

  • 60% - Assignments
  • 25% - Exams
  • 15% - Class Participation

Please note that class participation grades will be based on general participation during class discussions/activities, participation in the online discussion forum, and class attendance.

The final grades will follow the standard UNC grading system as outlined in the explanation of grading system by the Office of the University Registrar. The grading scale will be curved, with the highest grades reserved (as outlined by the Registrar office) for those with "the highest level of attainment that can be expected."


This syllabus and course materials draw heavily on resources provided by David Gotz. My deepest appreciation to him for his invaluable assistance in planning this course.