CMU CS Scholars 2023 - Programming Course

Course Syllabus



Course Description

Learning Objectives

By the end of this course, students should be able to: 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 simple-to-moderately complex problems. To build these programs, we will cover computational concepts such as: algorithms, data, variables, functions, conditionals, loops, lists, debugging, testing, style, and documentation. By the end of the program you will be able to build simple interactive programs that respond to user input.

Learning Activities

Learning is accomplished through two primary means: participation and homework assignments.

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. Feedback will be visible on Gradescope as well. Make sure to read your feedback! If you find a grading mistake, 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 shortly 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

On the last day of class, all students will complete a final evaluation. This will be a small set of problems similar to problems completed in class and on homework assignments. Final evaluations will be graded and given feedback shortly after this final class.

After the program has ended, you will receive an evaluation from Prof. Kelly that you can include in college applications. You will be evaluted on your class interaction, mastery of the concepts taught in class, and engagement with the bonus materials. 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.

Mastery Grading

We will use mastery grading to assess your performance on homeworks and the final evaluation. Each concept being evaluated will be scored on a mastery rubric: Your goal should be to achieve a rating of Mastered or Sufficient on every concept. If you receive an Insufficient rating on submitted work, you are encouraged to revise and resubmit by the revision deadline, or talk directly to Prof. Kelly if you're having trouble completing work by the revision deadline.


Course Resources

This course does not have a required textbook; all course materials will be posted online.

Required Software

You will need to download Python and an IDE to write code. Both of these can be downloaded for free online. We recommend that you download the IDE Thonny, which comes with Python pre-installed. Download Thonny here.

If your computer setup does not let you download external applications, you will need to code in a browser instead. You can use the online IDE repl.it in this case. This system is free, but the free version makes your code publicly viewable. To keep your code private, set up a GitHub student account with your andrewID or high school email, then connect it to your repl.it account; you can then create private repos for your homework assignments.

You may use another IDE of your choice if you'd like, but we will not support it if you have any IDE questions or if it breaks.

Communication Tools

You will probably have questions as you go through the course! 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 someone will get back to you within one working day.

Here are some tips for asking questions about bugs in code:

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

Health and Wellness

Your first priority should always be to take care of yourself. You can do this 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.

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:
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.

  1. 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!
  2. 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.
  3. 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. Reach out to Prof. Kelly and she 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!
  4. 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 collaborator in the class or Prof. KElly); 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.
  5. Read Your Feedback. Homeworks are formative - they're an opportunity to learn! When an assignment has been graded, go back and check the feedback written by the course staff. This is your chance to more deeply learn the material.