COURSE DESIGN AND APPROACH

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 practice exercises for you to complete 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. 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.

 

BOOKS AND READINGS

The organization for this course will adhere closely to the required textbook "Starting out with Python", Fourth 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):


Previous versions of the book (e.g., the 3rd edition) have VERY similar content. Used copies of the 3rd edition could be used instead of the new 4th edition if you can find an old copy. However, chapters, section numbers, and page numbers may differ. If you decide to use an edition other than the 4th edition, you should know that you are also taking on the added responsibility to recognizing these differences when completing the assigned readings and exercises.

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.
  • "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 POLICIES

Class participation is a key element of this course. All students are expected to come to complete lectures in a timely fashion, comlpete indepdent exercises, and be active participants in the online discussion form for this class. See the Other Information page for details about the discussion forum. In particular:

  • If you don't understand something from class, ask questions via the discussion forum (for details, look here).
  • Help your fellow students by posting comments/answers to the discussion forum. If you are shy, you can even post anonymously.

Assignments are due at 9:30am (local Chapel Hill, NC time) on the date that they are due unless otherwise specified.

Assignments are to be submitted using Sakai.

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.

 

GRADING

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 in the discussion forums. This includes asking questions, providing answers, or any other participation in the online discussion as it evolves over the semester.

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, 2017. All Rights Reserved.