CS 1 Recitation Home

Welcome to cs1! If you’re on this page, chances are I’m your section leader. If not, I always welcome new seekers of knowledge! You never have to ask me to crash any of my sections: you are always welcome. The more the merrier. :)

Why Recitation, Anyways?

Unlike the other courses, recitation is not optional. This is an introductory course, and until you pass this course, you do not have the sufficient fundamentals to be considered a competent coder in the eyes of the department. As such, you must show up to every recitation section. This is not difficult considering the sections were made taking your time elegibilities in mind. You said you were available, not me.

Sometimes, things come up. If this does happen, reschedule with another section leader. Ask them if you may attend – do not assume it to be okay. Note that I will be following up with them to ensure you did actually attend.

Recitation attendance does affect your grade.

We’re here primarily to help you - we clear up any concepts or anything that the Professor may not have had time to cover in lecture. The Dartmouth 3-class term is both a blessing and a curse. For the hard sciences, it makes it difficult to cover enough material given the limited meetings, which means we have to make use of recitation to go over anything we may have sped through in class.

It’s not so bad, I promise! Come and hang out - I promise you’ll learn a thing or two!

How Does This Work?

Recitation has a general pattern to it. Everyday begins with a drill section. Much like the language classes’ drill, learning a language (even a computer science one) does not come without practice. These sections help reinforce class materials and prepare for exams.

The Tips section is advice and strategies to help you do well in this course. In general it has advice about best coding practices.

The actual “lecture” material is generally used for helping out with lab assignments. Labs are much larger than short assignments, and since this is your first coding class, we help you through much of the high-level design and function break down.

Why jokes? Because why not. This isn’t class. I’m not a professor. I’m not supposed to be the person who bores you :).

Answering Questions

The token of destiny
The token of destiny

What is the token of destiny?

I’m glad you asked! I’ve found over the numerous times I’ve taught that the most difficult aspect of teaching is gauging when students don’t understand something, especially because people are afraid to ask questions.

Inevitably, I know the students don’t understand it, but I need to know why you don’t understand, or what concept you’re struggling with. I can’t simply ask you all to ask questions when in doubt (believe me, I’ve tried).

So I’ve stolen Professor Smith’s approach to things and am using the token of destiny. When you receive the token of destiny (may not always be the marker… I think I lost it…), you are obligated to answer the question. Oh yes! Nerve-wracking, isn’t it. I guess you’ll have to pay attention, as the token may be passed to you at any time.

But in all seriousness, I don’t benefit from having the same two people who know the answer respond to all the questions. It benefits the entire section to have other people try and answer the question, and this seemed like a great way to fairly divide up all the questions.

So I stole it (but cited it!).

Bonus Material

Disclaimer: None of this section will ever be test material. You will never be expected to know any of this. Every assignment is certainly doable without knowing any of this.

If you are struggling in the course, please do not read these. They will only serve to confuse you. These are advanced concepts designed to make you an advanced Python coder in one quarter. In addition, we won’t go over them in recitation. It’s up to you to learn them on your own.

Read this before you use code from the bonus section: You are certainly allowed to impress us by incorporating these concepts into your labs and short assignments. However, there are 300 students in the class. We cannot take time away from others to answer questions about bonus material.

So if you choose to incorporate bonus materials into your lab, that’s totally fine! But you don’t get to ask for help in the event that you get a bug. Perhaps this policy will change if many people drop the course and it becomes smaller; for now, this is how it works.

Think you’re the next Zuckerberg? This is the section for you.


Lectures will be added and updated as the term progresses.

# Drill Joke Tips Lecture Bonus
1 Basic Types Windows Writing vs Coding Welcome! No Eclipse
2 Functions Python Honor Code :/ Style Functions in Functions
3 Loops Boolean Debugging Pong Lab List Comprehension
4 Complex Types Function Decomposition Lists Exam Review Unit Testing
5 Classes & Objects Warnings OO Design Call By Object Inheritance Diamond
6 Recursion Recursion Stack Diagrams Gravity Lab Decorators
7 Sorting Algorithms Haha Sorting Complexity Analysis Exam Review Tail Recursion
8 Data Structures Debugging Exam Review Quicksort Lab Context Managers
9 Binary and Bits Depth First Search Circuit Design BFS Lab Generator Expressions
Closing Thoughts