Jason M. Grant

Assistant Professor of Computer Science

Introduction to Computing

About the class

This is an introductory computer science class and no prior experience is expected or required. It is one of several entry points into the CS major. We will do a lot of programming, and you will come out of the course knowing a fair amount of Python, but this is an introduction to computer science, not a “learn to program in Python” class. There is a lot of Python that we will not cover. Topics that we will cover include:

  • Abstraction, algorithms, and program design
  • Basic Python programming: variables, conditionals, loops, functions, and classes
  • Fundamental programming paradigms: functional, imperative, object-oriented
  • Data representation and storage
  • Computer architecture
  • Program complexity

Textbooks Think Python PrimaryCS for All.

Weekly homework and labs

Assignments will typically go out on Thursday and be due the following Thursday before midnight. Late homework will be penalized 10% if one day late; no homework will be accepted after 24 hours without a conversation with us first.

Lab sessions will meet on Friday.  Each lab session will cover a course-related, supplemental topic of Computer Science or the Python language.  There may be short Pre-lab reading assigned on Thursday, and an online quiz to be taken before labs meet on Friday.  Lab assignments are designed such that anyone can complete the minimum requirements during lab time.  Labs will be due by midnight the Sunday after lab.


You are expected to attend class and lab. We will cover a lot of material each day and will not regurgitate material from the textbook(s). Samples and examples used in class will be posted online, but you may find it difficult to replicate the class experience solely from the material posted online. 

Getting help

We’ll use Canvas for our class discussions outside of class. Rather than emailing questions to us or the tutors, we encourage you to first post the questions to Canvas. This will allow other students to answer questions and to benefit from the answers you receive. This system will only work if you use it, so please do so. Please do not post entire programs/function/classes on Canvas.

It is our experience that students often hesitate to post questions publicly online for fear of appearing “dumb” in view of their peers.  However, we strongly encourage each of you NOT to think this way.  More often than not, a large portion of the class shares your exact question, but are all too afraid to ask it, as well.  Or, perhaps some of your classmates had the exact same question earlier, figured something out, and could give you a hint.  Or, even better, maybe the act of typing out a coherent question makes you realize something about your problem and you answer it yourself.  The important takeaway, though, is that everyone here is trying to learn; failure and confusion are part of the process!

Honor code and collaboration

Short version Help each other, but do not share code.

Long version In computer science, we build on the work of developers before us. Most of us learned to code by copying code and finding ways to tweak it to do what we want. Almost no computer programs are built without building on the work of others, either in the form of algorithms, libraries, or even just short snippets of code.

On the other hand, there are questions of intellectual property and academic integrity. These are considerably murkier waters than you may face, for example, writing a history paper, or doing a problem set in math. With code, you can “accomplish” spectacular things by copying the right chunks of code without ever knowing how it works.

We encourage you to help classmates to debug misbehaving code. We encourage you to post questions (and answers!) on Canvas, but you need to do so in a way that respects other people’s work and in a way that contributes to your intellectual development rather than hindering it (or trying to mask your lack of it). This is not a race to get a good grade. The grade is at best a carrot along the way of doing the work required to become better educated. As such, don’t just go looking for code that you can turn in to satisfy an assignment.

Do not work collaboratively unless indicated by the assignment. You can help one another, but we do not want to see identical assignments that differ only in small ways. If someone does show you code (as an explanation or asking for debugging help), do not copy it. Retain ideas, and go away and write your own version later. Attribute any ideas, etc, that you pick up (this goes for classmates, books, online resources, etc). Be explicit. Indicate where you got the idea, approach, technique, etc. Explain what your contribution was. Make sure that your contribution demonstrates that you understand what was not your work alone. Finally, if you have any doubts, just ask us first.

Accommodations for disabilities

Students who have Letters of Accommodation in this class are encouraged to contact us as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. For those without Letters of Accommodation, assistance is available to eligible students through Student Accessibility Services . Please contact Jodi Litchfield at litchfie@middlebury.edu or 802-443-5936. All discussions will remain confidential.