Course Description
Learning Objectives
By the end of this course, students should be able to:
- Demonstrate knowledge of core Python syntax by reading and writing Python code
- Practice the soft skills of programming, including algorithmic thinking, testing, debugging, and writing code with good style
This course will introduce you to
computer programming. This field of study involves determining how to build algorithms (specific sets of instructions) that can solve problems, and how to translate those algorithms into a language that a computer can understand and execute. You'll specifically learn how to design and write Python programs to solve moderately-complex problems. You will learn to use control flow, simple data structures, and interactive systems by the end of the course. The work will culminate in writing code for a game of moderate complexity, Tetris.
Learning Activities
Learning is accomplished through two primary means: participation and homework assignments.
- Participation means attending daily lectures and staying involved in class discussion and work. In general, you should be an active member of the class!
- Homeworks are problems to be completed weekly, related to that week's material. Homeworks are generally released on Mondays and due by Fridays at the end of the day. You are welcome (and encouraged!) to collaborate on homework assignments, but you should always type up your own solutions (see the Collaboration section for more details). The course staff will grade assignments and provide feedback within one week of the due date (usually sooner).
Homework Assignments
Each homework assignment has a written component and a programming component. The two components are completed and submitted separately, but should be considered part of one larger assignment.
Written assignments can be completed by printing the assignment, writing answers by hand, and scanning the result; alternatively, you can type answers in the fillable PDF electronically by using
Adobe Reader (Windows/Macs), Preview (Macs), or Microsoft Edge (Windows).
Programming assignments should be completed in your IDE. Make sure to regularly run your code to make sure your syntax is correct, and try to pass all the test cases before submitting!
Both written and programming assignments can be submitted to
Gradescope. Grades and feedback will be visible on Gradescope as well. Make sure to read your feedback! If you find a grading error, you can submit a regrade request on Gradescope, and we'll take a look.
Each assignment has a regular deadline (usually Friday by end of day), but also a
revision deadline. The initial round of grading will happen the day after the regular deadline; if you find upon checking your feedback that you made some mistakes and you want to fix your work, you can resubmit up until the revision deadline and have your work regraded.
Course Evaluations
At the end of the course, you will receive an evaluation from Prof. Kelly that you can include in college applications. You will be evaluted on your participation in lecture, performance on homework assignments, engagement with the bonus materials, and on your performance on the
final evaluation. This is a test that will be assigned on the last day of class, Thursday 08/12.
To receive a positive evaluation, you should make a good-faith effort at all class activities and do your best on homework assignments and the final evaluation. It's okay to not always get things 100% right; if you're learning the material and working hard, that's what matters most.
Course Resources
This course does not have a required textbook; all course materials will be posted online.
Required Software
Every required software package we use is available for free on the web. This includes:
- Python version 3.x (3.6 or later), which can be freely downloaded and installed from python.org.
- Some issues have been reported with graphics in 3.9 on Macs. We recommend you download Python 3.8 instead to keep things safe.
- Pyzo, a free IDE (Interactive Development Environment) that is designed for introductory courses. To set up Pyzo on a personal computer, follow these instructions:
- Download and install Pyzo here.
- If you are on a Mac, you may need to verify that Pyzo is a safe application in your settings.
- Go to System Preferences > Security & Privacy.
- There should be a notification about Pyzo being blocked. Click 'Open Anyway' to verify Pyzo.
- Launch Pyzo.
- Setup your shell configuration to run Python 3
- On the top menu, click Shell->Edit Shell Configurations
- Click the dropdown labeled exe, and choose python.exe [v3.x]
- Under gui, select None - no GUI support (otherwise you may have problems when we do graphics)
- Press Done
- Restart Pyzo and you're ready to go!
- For a simple Python3 test, type this line of code in the shell/interpreter (with ">>>"):
print(5/3)
then press Enter. You should not get 1 (which you would get if you are using Python2) but instead should get 1.666666667.
You may use another IDE of your choice, but we will not support it if you have any IDE questions or if it breaks. If you temporarily need to code in a browser,
repl.it is a good choice that requires no set-up.
Communication Tools
You will probably have questions as you go through the course! There are two communication tools that will help.
Slack is a great tool for short questions about logistics or general class topics. Post on the computer-science-scholars channel of the Pre-College Slack and a TA or Prof. Kelly will get back to you within one working day.
Piazza is a great tool for longer questions about homework assigments or particularly tricky concepts. Post on the
course Piazza and a TA or Prof. Kelly will get back to you within one working day. Most questions can be made public (so that other students can see and benefit from the information too), but if you're making a post that contains your homework solution, please make the post private instead.
Here are some tips for asking questions about bugs in code:
- Be specific! Clearly reference which content area or homework problem you have a question about.
- If you still have related questions after someone answers your main question, create a followup discussion. Mark the discussion thread as resolved as soon as your question has been answered.
- If you include any amount of code in a Piazza post, put it in a code block (use the {;} button). Do not post screenshots of code, as this make debugging more difficult.
- When you ask for debugging help, describe any debugging you've already done and what you think the problem might be.
Office Hours
Sometimes you might have questions that are too hard to resolve over Slack or Piazza. Office hours (OH) is a great solution to this! OH is also just a great place to hang out as you're working on homework problems.
Official OH occur on Tuesdays and Thursdays from 5-6pm EST on the CS Scholars Zoom. We may rearrange OH into breakout groups based on usage after the first week or two.
Two office hours is a bit low for a programming class, so we're also offering
one-on-one office hours with the TAs or Prof. Kelly by request. Just message the course staff on Slack and let us know when you're available (make sure to include the timezone!). We're very happy to hold these office hours; just let us know reasonably in advance (at least a few hours lead time)
Further Resources
If you'd like to learn more or get additional practice, additional learning resources can be found on the Resources tab.
Course Policies
Zoom Interaction
Learning on Zoom is different from learning in person. Here are some guidelines to help us all work together as effectively as possible.
- Zoom Names: make sure Zoom lists the name you'd prefer others use for you. You may also include your pronouns in parentheses after your name.
- Video Generally On: in general, please keep your video on while attending lecture. This will help us create more of a sense of community among the class. It's okay to keep your video off if your camera doesn't work, you are in a public location, your wifi is having problems, or you're just not comfortable with it on, but by default we'd prefer that videos stay on.
- Audio Depends: for large-group gatherings (like lecture), please keep your audio off unless you have a question or a thought to share in a discussion. This will help us avoid random background sounds interrupting discussions. For small-group gatherings (like breakout rooms, office hours, and one-on-one meetings), you're welcome to keep your audio on instead.
- Questions via Chat and Raised Hands: if you have a question or a thought that you want to share in lecture, you can either type your comment in the chat or request permission to turn on your audio by using the raise-hand emote. For the chat, you may use either the public chat or send a message directly to the instructor (though we recommend the public chat when possible). For verbal comments, if the instructor calls on you, you can then turn on your audio for the duration of the question.
- No Recording: please do not make any recordings of lecture or other class sessions.
Health and Wellness
Your first priority should always be to take care of yourself, and this is doubly important during remote learning, which can be stressful. Take care of yourself by eating well, getting enough sleep, exercising, socializing, and taking some time to relax. This will help you achieve your goals and cope with stress.
All of us benefit from support during times of struggle. If you or anyone you know experiences any academic stress, difficult life events, or feelings of anxiety or depression, we strongly encourage you to seek support. In particular, if you are unable to attend class or complete homework due to an external situation (including a medical emergency or family/personal crisis), please contact the CS Scholars staff and Prof. Kelly so that we can provide support and arrange extensions as necessary.
If you or someone you know is in danger of self-harm, please call someone immediately, day or night:
Re:solve Crisis Network: 888-796-8226
Diversity and Inclusion
We warmly welcome students with a wide range of backgrounds and identities in this course. We strive to make every student in this class feel safe and welcome, both because we respect you as human beings with a diverse set of experiences and because we want to make learning computer science as accessible as possible. We acknowledge that computer science as a field currently suffers from a lack of racial and gender diversity, and we want to make the field more broadly accessible for all people.
If something happens that makes you feel unsafe, unwelcome, or discriminated against,
please let us know. You are always encouraged to reach out to the course staff; we will listen and support you. You can email Prof. Kelly directly, or contact the CS Scholars staff if you wish to remain anonymous.
Collaboration and Academic Integrity
Collaboration
You are encouraged to collaborate with other students in the program when learning the material and working on assignments. Here are a list of examples on how to collaborate well within this class.
- Discuss which general concepts might be useful in solving a problem (loops, data representation, etc.)
- Sketch out solutions on a Zoom whiteboard together.
- You should sketch out the solution together, discuss it, then erase the solution, do something else for a few minutes, then write up the solutions individually. Don't just copy the solution directly from the whiteboard- then you might not fully understand it!
- Note that this type of problem-solving should involve active participation by all students. You should not have one student solve a problem and present their solution to the rest of the group; this will not lead to good learning, and goes against our policies.
- For programming problems, review test cases together and discuss why the inputs result in specific outputs.
- For programming problems, help each other debug specific parts of assignment code.
- NOTE: do not 'debug' by telling a friend to try your approach instead! Help them figure out what is actually going wrong. To be safe, do not refer to your own code when helping a friend debug.
Academic Integrity in Assignments
There are certain restrictions on how much collaboration is allowed, to ensure that all students understand the material they submit on homework assignments. In general,
all collaborators must contribute intellectually and understand the material they produce, and
each student must write up their own assignment submission individually. If you submit work that you have not contributed intellectually to, or support another student in submitting work they do not fully understsand, this counts as an academic integrity violation. Violations can include:
- Submitting code written by another person, copying or stealing any amount of written text or code from someone else in the class, or providing text or code you have written for an assignment to anyone else in the class.
- Copying is never okay, whether the solution is provided electronically, visually, audibly, or on paper.
- Finding answers online and using them in the assignment, or consulting them while writing your own solution
- Exception: you may use code from the course website or the Official Python Documentation. Please include a citation with a link when you do this.
- Asking questions about the assignments on any online services outside of the course office hours and course Piazza
- In particular, do not post questions about assignment problems on Chegg or CourseHero. These sites are explicitly not allowed for homework assignments.
- Posting solutions from the course assignments online in public view
The course staff will regularly check assignment submissions for academic integrity violations. If a violation is found, you will be asked to meet with Prof. Kelly to discuss the situation, and penalties may be applied.
Mistakes happen. Sometimes, students panic and copy code right before the deadline, then regret what they did afterwards. Therefore,
you may rescind any homework submission up to 24 hours after the submission was made with no questions asked. Simply email Prof. Kelly and ask her to delete the submission in question, and she will do so. Deleted submissions will not be considered during plagiarism detection, though of course they will also not be graded.
Tips for Success
Learning how to program provides great opportunities, but it also may pose great challenges. Here are some tips for how to succeed in this course as you learn a new and exciting set of skills and concepts.
- Participate. You cannot learn how to program passively, by observing someone else; you have to practice. While attending lecture, follow along in your own IDE and try modifying the code the instructor writes to see what happens. Try things out and see what happens!
- Embrace Mistakes. "Bugs" (mistakes) are a common part of the programming process. Even expert programmers commonly produce bugs in their code that they need to fix (you'll see this happen to the course staff a lot!). Run your code to check your work often, and treat every bug as an opportunity to learn, not as a dead end.
- Get Help When You Need It. It's okay (and encouraged!!) to reach out for help when you're struggling with a concept or an assignment. Come to office hours and the course staff will be more than happy to help you learn. Find a collaborator and talk through the problems with them. In general, don't feel like you need to do everything on your own - embrace your learning community!
- Debug Smarter, Not Harder. It is very easy to get stuck when debugging an error in a program and spend hours on a single mistake with no progress. If you find yourself spending more than 15 minutes debugging the same error, you need to change your approach. First, try to get someone else to help you (a TA or a collaborator in the class); often a new set of eyes will notice things that you can't see yourself, and explaining your code to someone else may help you notice something new. Second, if no one else is available, take a break and do something else. When you come back to the problem later, you'll be able to see your code in a new light, and it might prove much easier to fix.
- Read Your Feedback. Homeworks are partially summative assignments (they show what you know), but they're also partially formative (they're a chance to learn). When an assignment has been graded, go back and check the feedback written by TAs on the problems you got wrong. This is your chance to more deeply learn the material.
Worried about taking a course online from home? Here are some
tips for success.