CS 303E: Fall, 2021
Elements of Computers and Programming

Instructor: Dr. Bill Young

Unique numbers: 52405, 52410, 52415; Class time: online; Location: online
This website: www.cs.utexas.edu/users/byoung/cs303e/syllabus303e.html
Instructor Office: GDC 7.810; Phone: 471-9782; Email: byoung at cs.utexas.edu
Instructor Office Hours: TBA and by appointment

These are your TAs: Find office hours on the Zoom tab on the class Canvas page.
Rodrigo Brandão; Email: roreego at utexas.edu
Winnie Chang; Email: wchang8 at utexas.edu
Zhen Chen; Email: zchen96 at cs.utexas.edu
Vineel Reddy Gajjala; Email: gajjala.vineel@gmail.com
Kevin Hao; Email: kjh2858@utexas.edu
Saumyaa Krishnan; Email: saumyaakrishnan at utexas.edu
Sooyong Lee; Email: sooyonglee1 at gmail.com
Orion Reynolds; Email: orionreynolds at utexas.edu
Jose Alonso Rodriguez; Email: alonsjous at utexas.edu
Isaiah Suarez; Email: isaiah.suarez at utexas.edu
Sam Ziegelbein; Email: samziegelbein at utexas.edu




Important Class Announcements:

Breaking news important to the class will be posted here. Consult this spot often.

I will usually post the work for the week here, but don't forget it's also down the page here: click to jump to homeworks.

Here is the Zoom recording I made to review this syllabus: Review this syllabus.

Week-0 (week of 8/25): read this syllabus carefully and completely; you can also watch the video I made walking through it. View video2: Why Computing Matters. (Note: there is no video1). Also, attempt weekly homework 0: HW0. You won't turn in the homework, but it will get you started in using Python, so do it. If you encounter problems, ask questions on Piazza.

Week-1 (week of 8/30): view video3 and video4 (slideset 1); do weekly homework 1: HW1 (due 9/3)

Week-2 (week of 9/6): view video5 and video6 (slideset 2); do weekly homework 2: HW2 (due 9/10)

Week-3 (week of 9/13): view video7, video8 and video9 (slideset 3); do weekly homework 3: HW3 (due 9/17)

Week-4 (week of 9/20): view video10, video11 and video12 (slideset 4); do weekly homework 4: HW4 (due 9/24)

All of the videos for the slides should have associated closed captioning. There should be a button in the lower right corner of the video. If you need the captioning and can't make it work, let us know.

Weekly homeworks, projects, and exams are graded by the TAs. Each TA grades for a specific alphabetic ranges of students' last names; those are posted below: click to find your TA. That way you can establish a connection to a specific TA; but don't hesitate to attend other TAs' office hours as well. If you have questions about the grading, your best bet is to contact "your" TA. In general, Dr. Young won't know why you lost specific points. To find your TA, see the TA associated with the alphabetic range containing your last name.

Sooyong has created two videos that show how to create a Python file in an editor and run it in Windows and MacOS. I suggest you watch one of the following depending on what system you're using: Windows video.
Mac OS video.

There will be weeks during the semester where you have an weekly homework due and also an exam or project. That's just the way it is. You know from the first day of class when your tests fall, and you'll have around two weeks for each project. So plan ahead! If you wait until the last day to study or work on a project, it's not really our fault.

This course is supported by Supplemental Instruction (SI) sessions from the Sanger Learning Center Flyer. SI Sessions are led by experienced and trained students who develop engaging, structured, small-group activities for you to work through. These sessions are a consistently scheduled time for you and your classmates to tackle difficult content and learn the best approaches to the course! More information on session times and how to access them will be available. You're welcome to attend sessions at any point in the semester but regular participation in SI Sessions has been shown to improve students' performance by an average of one-half to a full letter grade higher than the class mean. It is highly recommended for everyone.

Feel free to email me (Send me an email message).



Course Description:

CS303E is the first course in the Elements of Computing series for non-CS majors. Computing has become an integral part of many disciplines. This is especially true of STEM fields, but being able to think computationally and write programs is useful across the board. This course will introduce basics of programming within the context of a popular and powerful programming langugage, Python. We will study the syntax and special features of Python, develop our own algorithms, and translate them to computer code. We will learn problem solving techniques for a wide variety of problems amenable to computer solution. No prior programming experience is required or assumed.

This class is a fairly gentle introduction to computing. Students in this class come from a wide variety of majors and backgrounds. If you have previous programming experience in high school classes, other college classes, or on your own, you may get bored in this class. Consider taking the available exam to test-out of this course and begin with CS313E instead.

Here's some general advice on how to succeed in this class: How to Succeed in CS303E

This course carries the Quantitative Reasoning flag. Quantitative Reasoning courses are designed to equip you with the skills 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.

We will be covering most of the class textbook. Supplemental notes on various topics may be made available on the web. Make sure to keep up with the readings, lectures, and assignments.

Because of COVID-19, this class will be conducted entirely online. You will view recorded lectures that will be available to you under the Modules tab on the class Canvas page. The associated slides are linked below on this page. Make sure that you have access to the Canvas page and let me know as soon as possible if you do not. Note that there is not a specific class time or location; all course content will be delivered online via the recorded lectures, which you can view at your convenience during the week assigned.

However, note that this is not a self-paced course. Videos will be posted weekly and must be viewed that week. There will also be weekly homework assignments that must be completed and submitted on time. If you fall behind, you may not be able to catch up. Also, things start pretty slow, but the tempo picks up over the course of the semester so don't get lazy!

If you have some special circumstance that makes internet access difficult or impossible, let me know as soon as possible and I can work with you.

All office hours will be held via Zoom (or equivalent). You can access Zoom via the Zoom link on the class Canvas page. We will also communicate via email or, preferably, Piazza.

Class Recordings: Class recordings are reserved only for students in this class for educational purposes and are protected under FERPA. The recordings should not be shared outside the class in any form. Violation of this restriction by a student could lead to Student Misconduct proceedings.

Questions about Grading:

Weekly homeworks, projects, and exams are graded by the TAs. Each TA grades for a specific alphabetic ranges of students' last names; we'll be posting those assignments soon. That way you can establish a connection to a specific TA; but don't hesitate to attend other TAs' office hours as well. If you have questions about the grading, your best bet is to contact "your" TA. In general, Dr. Young won't know why you lost specific points. The TAs have been asked to be understanding and flexible regarding grading issues; but in general, Dr. Young won't override their grading decisions unless the decision was clearly unfair.

If you have a personal emergency and need additional time on an assignment, contact your TA as soon as possible. Again, the TAs have been asked to be lenient and understanding, but don't abuse this.

To find your TA, see the TA associated with the alphabetic range containing your last name below.

TA Name Student Names
Rodrigo:a - bek
Winnie:bel - com
Zhen:con - fih
Vineel:fii - hek
Kevin:hel - kom
Saumyaa:kon - maq
Sooyong:mar - noq
Orion:nor - rax
Jose:ray - sok
Isaiah:sol - vaq
Sam:var - z

Using Piazza:

We will be using Piazza for most class communication. You should be enrolled automatically in the class Piazza feed; if you're not, let me know as soon as possible. The Piazza system is highly catered to getting you help quickly and efficiently from classmates, TAs, proctors, and myself. Rather than emailing questions to the teaching staff, I strongly encourage you to post your questions on Piazza. However, don't post code and other items on Piazza that give away solutions to homework or projects, unless you post them privately (visible only to yourself and the instructors.)

Also, make sure that the email associated with you on Piazza is actually the email you plan to use. This will matter!

If you turn off Piazza notifications and miss an important posting, you are responsible. If you have any problems or feedback for the developers, email team at piazza.com. Because of some issues in past semesters, posts may be anonymous to the class, but not to the instructors. I expect that posts will be pertinent and respectful. Don't use Piazza as a place to vent or trash anyone. Please don't waste everyone's time posting jokes and other fluff. There will be around 600 people posting, so even a small bit of junk is too much.

Using Canvas:

You will submit most assignments on Canvas and that's where assignment, quiz and test grades will be posted. You should be enrolled automatically in Canvas for the class; if you're not, let me know ASAP. It is your responsibility to check grades on Canvas and verify their correctness. If you think there is an issue or omission, call it to our attention immediately. However, it is somewhat difficult for us to get Canvas to compute your course grade correctly, since we may be dropping some things, normalizing scores, giving extra credit, etc. So, the running averages on Canvas may not be correct, and may confuse you. Don't rely on them. The raw scores on individual assignments, quizzes and tests should be correct. If they are not let us know immediately. It's the running averages that may not be correct. Information on how to compute your class average for yourself is given below.

While we're not meeting in person, links to tests and quizzes likely will come to you via Canvas mail and via Piazza. It's a very bad idea to turn off notifications for Canvas mail (or Piazza notifications) because you may miss important announcement like that. Also, make sure that the email associated with you on Canvas is actually the email that you plan to use.

Some of you go by names that are quite different from your official name, i.e., the name on the class roll that I see from the UT registrar's page. This can cause problems at the end of the semester because I may not be able to match the grades on Canvas with the individual for whom I have to submit a semester grade. Please let me know if your name on Canvas is different than the name by which you are registered with the university.

Text:

The required text book for this class is Introduction to Programming Using Python by Y. Daniel Liang, Pearson, 2012 or 2013. Notice that this book is ancient in computing years, but also very good. You should be able to get it from the Coop or buy it on Amazon. Note that you do not need the MyProgrammingLab materials that may or may not come with your textbook. We won't be using that.

Class Schedule and Slides:

The class schedule is here:
schedule. This schedule is approximate; some dates may change. Rely on the assignment handouts, not on this schedule for assignment due dates. The dates for exams should not change, unless someone sees a major conflict that will affect many students. If you do see such a conflict let me know ASAP.

All of the class slides will be made available via links below as we cover new material. These are the slides covered in the recorded lectures, which were made in Fall 2020. However, I tinker with the slides as I find typos or find ways to explain things better. So they may differ in small ways from what you see on the videos. Don't worry about that.

You are welcome to print the slides out or view them on-line. Slides are in PDF form (full page or 4-ups). If you do print them, please print the 4-ups to save some trees. I have tried to follow the material in the book pretty closely to give you the best shot at mastering the material. If you don't get it from the book, you'll get a second chance from the lectures, and vice versa.

The associated videos are available on Canvas under the Modules tab. All of the videos for the slides should have associated closed captioning. There should be a button in the lower right corner of the video. If you need the captioning and can't make it work, let us know.

Slideset 0: Consider Computing 4up-PDF PDF

Slideset 1: Introduction to Python 4up-PDF PDF

Slideset 2: Simple Python 4up-PDF PDF

Slideset 3: More Simple Python 4up-PDF PDF

Slideset 4: Selections 4up-PDF PDF

Assignments:

Programming homeworks will be assigned nearly every week. They're due by the end of the due day (midnight). Answers must be submitted on Canvas. You can turn in weekly homeworks up to two days late with a penalty of 10% per day. You may discuss written assignments with classmates and get help from the instructors; but do your own work.

You will have several more substantive programming projects (probably three) over the course of the semester. You must work alone on all projects. The due dates will be clearly marked. Projects will be submitted on Canvas.

When you get your project and homework grades, please check them carefully. If there's an error call it to our attention. We expect that after a week the grades will be final, unless there is a real issue.

If you submit an assignment multiple times on Canvas, it renames your file from Filename.py to Filename-1.py, then Filename-2.py, etc. Don't worry about this; we'll grade the latest version.

The assignments are designed to build your skills methodically in the use of particular aspects of Python programming. Later in the semester you will learn Python features that would have made some of the earlier assignments quite a bit easier. Some of you have previous programming experience and may know about these features. But don't use constructs on assignments that we haven't covered in class yet. If you have questions about what you can use, just ask.

Links to weekly homeworks and projects will appear here and probably also in the Important Class Announcements at the top of this page. Homeworks are always due by 11:59pm on the due date.

All videos are on the class Canvas page under Modules. Each week, you should also do the reading for the week, indicated on the schedule. All videos are closed captioned. The captions should be available via a button in the lower right corner of the video window. Let me know if you need captions and can't get it to work.

Here is the Zoom recording I made to review this syllabus: Review this syllabus.

Week-0 (week of 8/25): read this syllabus carefully and completely; you can also watch the video I made walking through it. View video2: Why Computing Matters. (Note: there is no video1). Also, attempt weekly homework 0: HW0. You won't turn in the homework, but it will get you started in using Python, so do it. If you encounter problems, ask questions on Piazza.

Week-1 (week of 8/30): view video3 and video4 (slideset 1); do weekly homework 1: HW1 (due 9/3)

Week-2 (week of 9/6): view video5 and video6 (slideset 2); do weekly homework 2: HW2 (due 9/10)

Week-3 (week of 9/13): view video7, video8 and video9 (slideset 3); do weekly homework 3: HW3 (due 9/17)

Week-4 (week of 9/20): view video10, video11 and video12 (slideset 4); do weekly homework 4: HW4 (due 9/24)

Tests:

There will be two exams of approximately two hours each. See the schedule for dates: schedule. The exams likely will be taken online. (In Spring 2021, exams were given on the GradeScope system. The platform will be clearly indicated to you.) More on that later. Exams are cumulative. There will be no final exam during the exam period.

There likely will be several quizzes over the course of the semester. In a normal semester, these would be pop quizzes. But in our asynchronous format, we'll advance them in advance and you'll have several different times during the day when you can take them. But, if you miss one, there won't be an opportunity for a makeup. However, quizzes usually count the same as one weekly homework. It's a small portion of your grade, so don't freak out if you have to miss a quiz.

Getting help:

It is a good idea to post your questions on Piazza, so that others can comment and also see the answer. But please don't post homework or lab solutions or large code fragments except in private messages to the instructors. General questions about class material or tests should be directed to Dr. Young. The TAs and proctors will manage and grade the projects and homeworks and they are your best source of information on those.

This course is supported by Supplemental Instruction (SI) sessions from the Sanger Learning Center Flyer. SI Sessions are led by experienced and trained students who develop engaging, structured, small-group activities for you to work through. These sessions are a consistently scheduled time for you and your classmates to tackle difficult content and learn the best approaches to the course! More information on session times and how to access them will be available. You're welcome to attend sessions at any point in the semester but regular participation in SI Sessions has been shown to improve students' performance by an average of one-half to a full letter grade higher than the class mean. It is highly recommended for everyone.

Computation of Your Grade:

The weighting of the grades for the various aspects of the course are as follows:

Component Percent
Exams 40%
Homework and Quizzes30%
Projects 30%

Your semester course grade is computed from the raw scores on Canvas using a Python program I have written. Notice that Canvas attempts to compute a running average course grade as individual scores are entered. Ignore that. It's hard for us to get Canvas to compute that properly because of normalizing scores, dropping certain things, extra credit, etc. If you want to know how you're doing in the class, compute the score yourself.

Grades for the entire course tentatively will be averaged using the weighting below:

Course score Grade
[93...100]A
[90... 93)A-
[87... 90)B+
[83... 87)B
[80... 83)B-
[77... 80)C+
[73... 77)C
[70... 73)C-
[67... 70)D+
[63... 67)D
[60... 63)D-
[ 0... 60)F

This is tentative. The grades may be curved and may be a bit more generous than this. They will not be less generous. That is, if you have a 93 you are guaranteed an A; but someone who gets an 92 might also get an A, depending on the final distribution of grades in the class.

FERPA prohibits instructors from discussing grades with students over email. However, I can do so if you give me explicit permission. So, if you ask me via email for an update on your grades or how you're doing in the class, please understand that I can't do it unless you explicitly say that you're OK with me providing an email response.

Scholastic Dishonesty:

Academic dishonesty will not be tolerated. See http://www.cs.utexas.edu/academics/conduct for an excellent summary of expectations of a student in a CS class.

All work must be the student's own effort. Work by students in previous semesters or code that you find on-line is not your own effort. Don't even think about turning in such work as your own, or even using it as a basis for your work. We have very sophisticated tools to find such cheating and we use them routinely. It's far better to get a 0 on an assignment (or exam) than to cheat.

By the way, even if you do all of the work yourself, sharing your work with someone else is still cheating. You will both be punished. You may think that you're doing your friend a favor. You're not; you're putting both of your own academic futures at risk.

Apparently, many students begin every assignment by immediately going to Google, trying to find something that might keep them from having to solve the problem for themselves. That is an incredibly stupid thing to do. For one thing, you won't learn the material. But more importantly, you're starting down a slippery slope that's liable to send you over the edge. Suppose you find something up to and including a complete solution that some idiot has posted on GitHub; it will be too tempting not to use it.

You may naively believe that changing variable names and reordering code will keep you from being caught. Computer science is amazing! We have very sophisticated automated tools that can compare thousands of programs and find copying even if the variable names are different and the code is substantially re-ordered. With very high likelihood, you will be caught if you cheat. Every semester, students learn this the hard way. In Fall 2020, several dozen students were caught cheating in this class and were either forced to drop the class, got an F, and/or were reported to the Dean of Students office. In Spring 2021, there were a smaller number who suffered this penalty; hopefully, word is getting around. Don't be one of those students. It's not worth it!

Sharing of Course Materials is Prohibited: No materials used in this class, including, but not limited to, lecture hand-outs, videos, assessments (quizzes, exams, papers, projects, homework assignments), in-class materials, review sheets, and additional problem sets, may not be shared online or with anyone outside of the class unless you have my explicit, written permission. Don't post your work on any publicly available site, such as GitHub, Course Hero, or Chegg.com. It's understandable that you're proud of your work, but this just invites copying for students this semester and in subsequent semesters. If someone copies your work, even without your knowledge, you will both be liable to punishment, even in subsequent semesters.

Unauthorized sharing of materials promotes cheating. It is a violation of the University’s Student Honor Code and an act of academic dishonesty. I am well aware of the sites used for sharing materials, and any materials found online that are associated with you, or any suspected unauthorized sharing of materials, will be reported to Student Conduct and Academic Integrity in the Office of the Dean of Students. These reports can result in sanctions, including failure in the course, and even expulsion from the University.

No deviation from the standards of scholastic honesty or professional integrity will be tolerated. Scholastic dishonesty is a serious violation of UT policy; and will likely result in an automatic F in the course and in further penalties imposed by the department and/or by the university. Don't do it! If you are caught, you will deeply regret it. And even if you're not caught, you're still a cheating low-life.

Students with Disabilities:

If you are a student with a disability, or think you may have a disability, and need accommodations please contact Services for Students with Disabilities (SSD). You may refer to SSD’s website for contact and more information: UT Diversity Office. If you are already registered with SSD, please deliver your Accommodation Letter to me as early as possible in the semester so we can discuss your approved accommodations.



Some Interesting Links:

As I find items of interest to the class, I will post them here. Newer items are near the top.

Some interesting material about careers in computing can be found here: Careers in Computing

A career guide for Computing: Career Guide

A student found these online texts to be useful resources: Automate the Boring Stuff with Python, Think Python 2e

Good turtle graphics documentation: Turtle Graphics
Turtle tutorial: Tutorial.
Some issues around floating point: FP issues
Some nice videos on Python from the Khan Academy: Khan Academy Videos.

Sooyong created two videos that shows how to create a file in an editor and run it in Windows and MacOS. If you still aren't able to do that, I suggest you watch either: Windows video.
Mac OS video.

Python Links

Python Tutorials and Books

Miscellaneous Information on Python