Computer programming is about problem solving. It is about breaking down a problem into smaller pieces, developing solutions for those sub-problems, and connecting 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 class will provide an introduction to programming with a focus on the Python programming language. The course will teach you how to use Python, its syntax, and its features. However, the course will present material that is much more fundamental. You will learn a bit about how computers work. You will learn about data representations and structures. You will learn about flow control concepts including conditionals and iteration. You will learn design techniques, best practices, and debugging methods.

However, this course is not just about concepts. Throughout the semester, you'll be given opportunities for hands-on practice. This includes both in-class exercises and homework assignments. This follows a "learning by doing" philosophy which motivates much of this course's design. Given this design, you'll find that many class sessions include classroom exercises on your own laptop. You'll also find that the course schedule includes a large number of assignments, each designed to reinforce different course topics.

BEWARE: This class will require you to invest a significant amount of time to succeed. As a student in this course, you will be asked to complete readings in our text book, perform in-class exercises, and code up solutions to homework assignments. There will also be a final exam. Students who invest the required time in these activities will succeed. However, do not wait until the last minute to complete your assignments. 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", Third Edition, by Tony Gaddis (published by Pearson). This book is sometimes referenced as SOWP elsewhere on this website. Copies of the textbook should be available in the Student Bookstore. The book is also available from online retailers in two versions (both with the same content):

I recognize that this book requires an investment on your part. This particular book has been selected because of the positive reviews from past INLS 560 students here at UNC. Those students strongly recommended this book, and it will be used extensively throughout the semester.

In addition to the required textbook, there many other resources available to students who are interested in learning more. Many of these resources are available online. Good places to look for more about programming and Python include:

  • Google (or Bing). The search engines you use every day are perhaps the best place to go to find examples, code snippets, documentation, and more. I myself use Google every day that I program to look things up. The web is the first place I go for help. You'll see this in class as we go through exercises together.
  • "Think Python" by Allen Downey. Available online and in print from O'Reilly.
  • "Learn Python", an online interactive tutorial.
  • "Learn Python the Hard Way" by Zed Shaw. Available online and in print from Addison-Wesley. Available online and in print from Addison-Wesley.



Class participation is a key element of this course. All students are expected to come to class prepared to be engaged, to participate in all class exercises, and to contribute to group discussions. In addition:

  • Be on time for class.
  • If you know in advance that you will be miss a class, arrive late to class, or leave early from class, please let me know ahead of time.
  • If you miss class unexpectedly, please let me know why you were absent before the next class meeting.
  • Repeated absences or late arrivals will negatively impact your class 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 (see here for more information).
  • "Quality is better than quantity." Class participation is part of your grade for this course. However, there are many ways to participate.

Assignments are due by the start of class on the day they are due unless otherwise specified. For assignments that are due on days when class is not scheduled, they must be submitted by the normal class starting time (even though class is not meeting) 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 refers to 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 72 hours (3 days) late.

Start early and ask questions. Many assignments may turn out to be more time consuming than expected. It is strongly suggested that you 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.

Exceptions due to special circumstances will be considered on a case-by-case basis. When deemed appropriate, limited extensions may be granted. However, be sure to inform the instructor AS SOON AS POSSIBLE should you require a special accommodation. If a problem is known about in advance, then the instructor should be told before it occurs. Exceptions are much less likely to be provided if requests for accommodation are not made in a timely fashion.

Those with questions about course material, having trouble with assignments, or seeking any other kind of assistance related to class are encouraged to meet with the instructor during office hours. Regularly scheduled hours are posted to the "Course Information" section on the home page for this class website.

Meetings by appointment can be made when scheduling problems prevent students from seeking help during regularly scheduled office hours.

All assignments and exams are expected to be completed individually. Students are expected to adhere to the UNC Honor Code.



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.

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

The content on this page has been developed by David Gotz at the University of North Carolina at Chapel Hill. Copyright © 2015, 2016. All Rights Reserved.