Syllabus - Computer Sciences 303e - Elements of Computers and Programming
The University of Texas at Austin · Summer 2024

Description: Computer science encompasses a wide range of topics and skills designing and building computer devices (e.g., your cell phone, laptop, cleaning robots), designing and building programming languages (e.g., Java, Python, C) and the supporting software that control these devices (e.g., operating systems, compilers), and the actual applications themselves (e.g., reading an x-ray, video animation, autonomous vehicles). This course focuses on how to write computer programs that solve problems using a computer and computations to determine the solution.

Programming is one of the key tools that computer scientists use to help themselves and others use to solve problems. This course uses a particular programming language, Python, to introduce you to how to use a computer to solve your problems. In this course, most of your learning will take place when you are putting in to practice the concepts from the book and lectures to solve more and more complex problems using more and more sophisticated programming practices. You will learn by doing. Performance on the programming assignments and performance on exams correlate closely.

Programming is a skill learned by experience, not just listening to lecture. To gain that experience I strongly encourage you to attend class to complete the in-class programming exercises and do as many extra problems as time allows. See the schedule for extra problems from the textbook.

Objectives: This is a first course in computer programming. The purposes of the course are to learn fundamental computer science concepts including algorithm development, problem decomposition, variables, computation, parameters, conditionals, iteration, Strings, lists, lists of lists, dictionaries, sets, and working with files. By the end of the course students are expected to be able to implement programs consisting of roughly one hundred lines of code employing non trivial algorithms and multiple functions

Estimates of the required effort to pass the class are:

Quantitative Reasoning Flag: This course carries the Quantitative Reasoning flag. Quantitative Reasoning courses are designed to equip you with skills that are necessary for understanding the types of quantitative arguments you will regularly encounter in your adult and professional life. You should therefore expect a substantial portion of your grade to come from your use of quantitative skills to analyze real-world problems.

Lectures: Monday, Wednesdays, and Thursdays. 11:30 am - 1:30 pm. BUR 112. Each lecture shall have an in-class programming exercise. 21 total. Completing these may help you get bumped to the next higher grade if you are close to a cutoff. (Details in the grading system described below.) Complete the specified readings before lecture. Topics and readings listed on the course schedule.

If you miss a lecture you are responsible for catching up on the material on your own. In-class programming exercises cannot be made up. Use the book, the slides, and the course discussion tool, Piazza, to ask question. If you fall behind, you will very likely not be able to catch up. Keep up!

I do not allow the use of laptops or any device with a raised screen in class. If you have a device that can lay flat on the desk such as a tablet or 2-1 computer you may use it. I strongly recommend you do not have your phone or other electronic devices out in class. I implore you to not use class time to e-mail, post to Instagram or Snapchat, etc. If you are addicted to your smartphone, laptop, or tablet, consider this class your social media free zone. Further, I guarantee you that you will not do well in the course if you are simply looking up long enough to type out what’s on the projector screen before you return to social media apps. The empirical research on this topic is clear: people are incapable of learning and retaining information when they are multi-tasking on their

Teaching Staff:

Required Materials:

  1. Starting Out With Python, 5th Edition by Tony Gaddis, ISBN: 9780135929032, Note, the access code is NOT required. Just the textbook.
    Textbook homepage. Textbook Companion Site (VideoNotes May be Useful)

  2. A computer capable of downloading and running Python and connecting to the web to access course materials and turn in assignments.

Class web site: http://www.cs.utexas.edu/~scottm/cs303e. Course materials and announcements are available there.

Startup: Most of the things you need to do to set up your infrastructure for the class are on the startup page.

 Class Discussion Tool: The class discussion group is on Ed, available via Canvas. The Ed discussion group is an official channel of communication for this course.

Canvas: We use Canvas and GradeScope to turn in programming assignments and post grades.

Email: All students shall be familiar with the University's official e-mail student notification policy. It is your responsibility to keep the University informed as to changes in your e-mail address. You are expected to check e-mail on a frequent and regular basis in order to stay current with University-related communications, recognizing that certain communications may be time-critical. It is recommended that e-mail be checked daily. The complete text of this policy and instructions for updating your e-mail address are available at http://tinyurl.com/pm6ej6e which includes instructions on how to update the email address you have on record with UT.

You are responsible for checking your e-mail and the class discussion group on Ed regularly for class work and announcements.

Software: Download and install Python 3.8.x on to your machine. Instructions at this page.

I also recommend downloading and installing the PyCharm Python, Educational Version, IDE (interactive development environment, an application that is a tool to help write computer programs). You may use whatever IDE you want, but many students have found PyCharm superior to IDLE, the simple IDE that comes with Python. The teaching staff may not be able to help with problems you have with IDEs besides PyCharm.

Schedule: A schedule of lecture topics, reading assignments, and assignment distribution and due dates is available online, via the class web page. The schedule page contains links to slides for the lectures, assignments, and online readings. Readings are to be completed before lecture. The exercises listed on the schedule are not turned in, but doing these will increase you chances of success in the class. The schedule is subject to change.


Grading: The class components used to determine your final average are:

Component Type Number Points Total Points
In class programming exercises 21 See Below See Below
Programming Assignments 13 10 or 20 points each 210
Midterm Exam, In class Wednesday, July 3, 11:30 am- 1:30 pm on Covers up to and including Chapter 5 of the textbook, Functions 1 400 400
Final Exam, Thursday, August 1, 7 - 10  pm Location: TBD.  Final exam is cumulative  - Covers all topics from lecture and the book chapters 1- 10 and 12. 1 400 400

Guiding Principle - No whining: Feedback and concerns about the course are always welcome; legitimate grading errors that are identified in a timely fashion will certainly be corrected, but whining is counter-productive and will only irritate those who evaluate your work to determine grades. Take the feedback you receive on programming assignments, especially the feedback on program hygiene (how the code is written and if it follows the Python style guidelines) and improve on the following assignments.  Realize if you ask for a regrade "because it can't hurt to ask" your score may actually go down if we find more errors and problems.


Important Dates for Changing Academic Status and Dropping the Course: Refer to the Registrar's academic calendar for the deadlines for changes in academic status. Highlights are:

See the College of Natural Science Guidelines and Procedures page for more information. (http://cns.utexas.edu/advising/guidelines-procedures)


Help when You’re Struggling, Have a Crisis, or an Emergency

Please, when something bad happens, or when you’re feeling overwhelmed, get help. Don’t endure it on your own. Even talking through the situation often helps. Here are some options:


University Code of Conduct:

The core values of the University of Texas at Austin are learning, discovery, freedom, leadership, individual opportunity, and responsibility. Each member of the University is expected to uphold these values through integrity, honesty, trust, fairness, and respect toward peers and community.

Academic Honesty: Taken from the CS department Code of Conduct.

"The University and the Department are committed to preserving the reputation of your degree. It means a lot to you. In order to guarantee that every degree means what it says it means, we must enforce a strict policy that guarantees that the work that you turn in is your own and that the grades you receive measure your personal achievements in your classes:

Every piece of work that you turn in with your name on it must be yours and yours alone unless explicitly allowed by an instructor in a particular class. Specifically, unless otherwise authorized by an instructor:

You are responsible for complying with this policy in two ways:

  1. You must not turn in work that is not yours, except as expressly permitted by the instructor of each course.
  2. You must not enable someone else to turn in work that is not theirs. Do not share your work with anyone else. Make sure that you adequately protect all your files. Even after you have finished a class, do not share your work or published answers with the students who come after you. They need to do their work on their own. This means do not post your solution code to any public web site such as public repositories on GitHub. Do not post your work to the web even after you have completed CS303e.

The penalty for academic dishonesty will be a course grade of F and a referral of the case to the Dean of Students. Further penalties, including suspension or expulsion from the university may be imposed by that office.

One final word: This policy is not intended to discourage students from learning from each other, nor is it unmindful of the fact that most significant work in computer science and in the computing industry is done by teams of people working together. But, because of our need to assign individual grades, we are forced to impose an otherwise artificial requirement for individual work. In some classes, it is possible to allow and even encourage collaboration in ways that do not interfere with the instructor's ability to assign grades. In these cases, your instructor will make clear to you exactly what kinds of collaboration are allowed for that class."

For CS303e the policy on collaboration is modified as follows:

You are encouraged to study for tests together, to discuss at a very high level methods for solving the assignments, to help each other in using the software, and to discuss methods for debugging code.

You are committing academic dishonesty if you look at someone else code (current students, past students and code from the web) in electronic or discuss the code in at such a detailed level that solutions turn out essentially the same. You are committing academic dishonesty if use use a large language model / generative AI such as chatGPT to generate any of your code. You shall not ask anyone to give you a copy of their code or, conversely, give your code to another student who asks you for it.

Similarly, you shall not discuss your algorithmic strategies at such a detailed level that you and your collaborators end up turning in essentially the same code. Discuss very high level approaches together, but do the coding on your own. Realize with complex problems, two programs that have produce the same results given the same input will vary significantly in approach and structure. You are making many, hundreds, of micro decisions as you design and implement your programs. It is extraordinarily unlikely two people working on the same complex problem will produce the same solution.

Examples of cheating are many and include accessing another student's account, using a large language model / generative AI such as chatGPT to generate any of the code you turn in, looking at someone else's solution code, copying or downloading someone else's solution code on the web or other sources, referring to solutions from previous semesters, having another student walk you through the solution and how to code it, discussing the problem at such a detailed that you are essentially coding together, having another student perform significant debugging of your code, having another student write your code for you and / or allowing others to copy of access your solution code.  This means you shall not look on the internet for code to solve your problems. This list is not all inclusive.

Examples of allowable collaboration include discussions and debate of general concepts and solution strategies and help with syntax errors.

You can reuse code from lecture, help hours, and the class textbook with proper credit given. Use a comment to note code and the source (lecture, help hours, or class textbook).

If you have any doubts about what is allowed ask the instructor.

Plagiarism detection software will be used on assignments to find students who have copied code from one another. 

The typical penalty for committing academic dishonesty on a programming assignment is a grade of zero on the assignment AND a one full letter grade reduction in the student's final course grade.

For more information on Scholastic Dishonesty see the University Policy on Scholastic Dishonesty


Religious Holidays: By UT Austin policy, you must notify "as far in advance of the absence as possible so that arrangements can be made."  Please email me at least fourteen (14) days prior to the date of observance of a religious holy day so I have time to set up accommodations. If you must miss a class, an examination, a work assignment, or a project in order to observe a religious holy day, you will be given an opportunity to complete the missed work within a reasonable time after the absence.

Disabilities and Access: Students with a documented disability may request appropriate academic accommodations from the Division of Diversity and Community Engagement, Services for Students with Disabilities, 512-471-6259 (voice) or 1-866-329-3986 (video phone). https://diversity.utexas.edu/disability/about/
Please request a meeting as soon as possible to discuss any accommodations
• Please notify me as soon as possible if the material being presented in class is not accessible
• Please notify me if any of the physical spaces are difficult for you to use and / or navigate


To the CS 303e home page