About This Course
This course is an exploration of the Python programming language. Our learning will be divided into two parts: class time and programming assignments. We will use class time to discuss concepts of Python's design and implementation. Understanding these concepts makes it easier to learn and remember Python. To really learn a programming language, however, you must write programs. The programming assignments challenge you to solve common problems that Python programmers face.
We will use many techniques during this course: standard lectures, hands-on demonstrations, individual homeworks, pair programming tasks, and group discussions. If there's one thing to remember about this course, it is this: Process is more important than results. I care more about your willingness to explore, ask questions, and make mistakes than I do about the "right" answer.
This is a one-credit-hour course, but it has been compressed to a half-semester schedule. We will be covering a lot of material, some of it at a very quick pace. I understand it's difficult to prioritize courses. When balancing your schedule and efforts, keep in mind that this course is effectively a two-credit-hour course that ends before the mid-terms in most of your other courses.
At the end of the course, you will be able to recognize problems for which Python is well-suited, and you will be able to use Python to solve those problems. If you set Python aside after the course ends, you will understand the language design so well that it should be easy to pick back up.
What You'll Need
Pre-requisites. The course description lists CS307 and CS313E/ECE322C as pre-reqs. Whether you've taken these courses or not, you must have basic programming skills to take this course. You'll need to know how to create a program to solve a problem, assuming you're given an adequate description of the problem. You should be familiar with basic data types like stacks and basic abstraction mechanisms like functions and recursion.
Current E-mail Account. I will send out occasional e-mails about changes to the schedule or assignments or about other class-related matters. The University provides me with your e-mail address. Please make sure this address is current, and please check your e-mail regularly. I will expect that you have read any e-mail I have sent, and you will be held accountable for any information an e-mail may contain. To update your e-mail address with the University via UTDirect, visit: https://utdirect.utexas.edu/utdirect/bio/address_change.WBX.
Blackboard. The Blackboard discussion board will be an important forum for asking questions and distributing information. I also will occasionally post notices on Blackboard.
UTCS Unix Account. You will need to submit your assignments using this account. If you do not have an account, request one as soon as possible. The CS department will give you an account to use in this course, even if you aren't a student in the department. You can request an account online at: https://udb.cs.utexas.edu/amut/acut/. Once you obtain an account you can access it via SSH or from a computer in one of the department's UNIX labs.
Access to Python You'll need to use Python outside of course, to explore the language and complete your assignments. We will be using Python version 2.6.1 in this class. Python 2.6.1 is installed on your UTCS UNIX account under the command /lusr/bin/python2.6. If you decide to install a copy on your own computer, be sure to get version 2.6.1. If you are having trouble installing Python, post a question on Blackboard. Be sure to include your operating system information.
Python References. When you first start learning Python, you'll probably need a handy reference. I've listed a few below; a Web search will yield many more.
- The Co-op has copies of an optional textbook, Beginning Python: From Novice to Professional by Hetland.
- There is a free Web-book by Alan Gauld: www.freenetpages.co.uk/hp/alan.gauld/.
- The Python documentation contains tutorials and references: python.org/doc.
Office Hours
I encourage you to come talk to me about the course work, difficulties you might be having in class, or computer science in general. I much prefer chatting with you than sitting alone in the basement of ENS. If you're not able to attend the posted office hours, please check my schedule and e-mail me for an appointment.
Grading
This course is designed as a group exploration of a new programming language. We will be exploring Python in numerous ways. The most important component of this course is your participation, and that priority is reflected in the grading scheme.
Participation (30%). Your participation will take many forms. Some are formal and easy to measure; some are informal and more difficult to measure. Participation will include, but may not be limited to: attending class and asking lots of questions, posting and answering questions on Blackboard, e-mailing me interesting questions or topics that I can share with the class, and being a good programming partner. Participation is a naturally subjective quality. I will be observing your participation as the course progresses. Half-way through the class--and again at the end of the class--I will ask you to assess your level of participation. I will compare my assessment to yours, and if there is a discrepancy, we will work it out. Rest assured, I want you to succeed. If you are concerned about your level of participation or how I might perceive it, please e-mail me or visit me during office hours.
Quizzes (20%). There will frequent unannounced quizzes. They will help me gauge how well the class is retaining key concepts. Quiz grading is on a credit / no credit basis, which means that any reasonable attempt at a response will receive credit. Each quiz will be given at the beginning of class, and we will discuss the answer immediately following. A quiz may not be made up. To account for unexpected absences, missing one quiz will not affect your grade.
Assignments (40%). There will be 1-2 individual homeworks and 3-4 pair programming projects. The individual homeworks are easy. You must complete them on your own. For the pair programming projects, I will assign you a partner. You and your partner will work together throughout the semester. You will not be able to change partners except under exceptional circumstances to be determined by me. You and your partner will receive the same grade on your programming assignments. Homeworks will generally be due at midnight before a class day. This deadline gives me time to review your work so we can discuss the solutions during class. This means that there can be no late submissions. Please account for Murphy's law and submit your solutions early. You may submit multiple solutions--only the last solution will count. It is better to turn in an incomplete assignment on-time than to turn in no assignment at all.
In-Class Final (10%). On Tuesday, March 10, we will take an in-class final. The final will be challenging, but if you have been attending class throughout the semester, you should get almost all the points. The final cannot be made up if you miss it. If you cannot attend class on March 10, let me know as soon as possible.
I will post all grades on e-gradebook. I will notify you when I post new grades. If you feel I have made a mistake in my grading, you should submit your dispute by e-mail within a week after receiving the grade. I will review my decision, but note that your grade may go up or down as a result.
Feedback
Feedback is an important part of any learning. During this course I will be asking you to give me feedback on your learning in implicit ways (e.g., quizzes and assignments) as well as explicit ways (e.g., "How's the class going for you?"). This is your class, and I want to make sure you get the most out of it. Please let me know right away when something we discuss is not clear. If you don't understand something, chances are several other students feel the same way. You are always free to interrupt me--don't let me get away with glossing over any topic. If you would like to provide anonymous feedback, you may do so at any time by clicking the "Anonymous Feedback" button on the course Web page.
Notices
Academic Honesty. Read the department's academic policy page at www.cs.utexas.edu/~ear/CodeOfConduct.html. I must give a failing grade to any student who demonstrably violates this policy. If you have any questions about what might constitute a violation, please ask.
Disability. Students who require special accommodations need to get a letter that documents the disability from the Services for Students with Disabilities area of the Office of the Dean of Students (471-6259, voice or 471-4641, TTY for users who are deaf or hard of hearing). This letter should be presented to the instructor in each course at the beginning of the semester and accommodations needed should be discussed at that time. Five business days before an exam the student should remind the instructor of any testing accommodations that will be needed. For more information see: deanofstudents.utexas.edu/ssd/providing.php.
Religious Holidays. Religious holy days sometimes conflict with class and examination schedules. If you miss an examination, work assignment, or other project due to the observance of a religious holy day you will be given an opportunity to complete the work missed within a reasonable time after the absence. It is the policy of The University of Texas at Austin that you must notify each of your instructors at least fourteen days prior to the classes scheduled on dates you will be absent to observe a religious holy day.