Skip to content

Mark-Hopkins-at-Williams/csci-121

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSCI 121: Fundamentals of Computer Science I (Spring 2021)

Basic Information

Professor: Mark Hopkins, hopkinsm@reed.edu

Lecture Schedule: MWF 1215-105pm (Section 1), MWF 135-225pm (Section 2), MWF 310-4pm (Section 3). All sections are online at https://zoom.us/j/3344875668.

Lab Schedule: Tu 315-435pm (Section 1), Tu 140-3pm (Section 2), Tu 850-1010am (Section 3). All sections are online at https://zoom.us/j/3344875668.

Office Hours: MWTh 4-6pm (all by appointment - sign up using this link).

Website: http://markandrewhopkins.com/csci-121-fundamentals-of-computer-science-i

Course Information Sheet: here

Overview

The goal of this course is to introduce you to the principles of computation. That includes teaching you to write a program, as well as how a computer interprets and runs that program. Writing a program well can be a difficult skill to master. You must understand the tools available to you, and you must understand the principles of good design that allow those tools to be used in manageable, understandable ways.

Our vehicle for building these skills will be programming in Python, which is a good introductory language for a variety of reasons. First, it uses a reasonably simple syntax, reducing the need to get bogged down in messy details. Second, it is very flexible, allowing us to show you several ways of writing programs. Finally, it’s a widely used language, meaning that knowing it will be potentially quite useful to you after the course. Given how much time we will spend programming in Python, you could be excused for thinking this was simply a course in how to write Python programs. It is not. There are some areas of programming (like graphical interfaces) that are very useful for practical applications, but which do not require any new conceptual understanding. We will largely be ignoring those areas, though the course should make it easy for you to learn those things on your own with some quick internet searches. We will also be covering some topics which do little to aid in the writing of programs, but which are important to the understanding of computation as a whole.

Learning outcomes

Upon completion of the course, students will be able to:

  • write moderately complex programs using a high-level programming language
  • write code using recursive functions, object-oriented programming, and standard elementary data structures
  • analyze the running time of simple programs
  • organize and document their code

I also want to remind you that this course (and any college course) requires and builds a variety of skills outside the specific course content. These include, but are not limited to:

  • reading and listening carefully
  • thinking creatively and logically in order to solve difficult problems
  • remembering relevant information
  • persisting through challenging problems even when you are stuck
  • managing time properly and being productive
  • keeping track of assignments, communication, etc.
  • working with other people effectively
  • asking for help when you need it

Coursework

Sprints: The course is organized into six "sprints," most of which last two weeks (the exception is Sprint 4, which is three weeks, but Wednesday, Mar 10 is a Reed-wide holiday). Each sprint culminates in a 50-minute quiz. The tentative timeline for the sprints is as follows:

  • Sprint 1: Monday, Jan 25 to Friday, Feb 5
    • Simple expressions (Booleans, strings, integers, floats)
    • Variables
  • Sprint 2: Monday, Feb 8 to Friday, Feb 19
    • Functions
    • Lambda expressions
    • Variable scope/environment diagrams
    • Lists
    • While statements
  • Sprint 3: Monday, Feb 22 to Friday, Mar 5
    • Dictionaries and sets
    • Mutability
    • Linked lists
    • Trees
  • Sprint 4: Monday, Mar 8 to Friday, Mar 26
    • Recursion
    • Object-oriented programming
    • Object inheritance
  • Sprint 5: Monday, Mar 29 to Friday, Apr 9
    • Sorting algorithms
    • Complexity analysis/O-notation
    • Base-k representation
  • Sprint 6: Monday, Apr 19 to Friday, Apr 30
    • Character encodings
    • Files
    • Asynchronous events
    • Graphics and animation

Homework: Most Fridays, there will a homework set due. It will typically be assigned during Tuesday lab, and the first part of the homework will be done in collaboration with a partner during lab.

Projects: There will be three or four projects during the course. These are more substantial assignments that will give you experience with creating larger and more complex computer programs.

Quizzes: There will be six in-class quizzes throughout the course, one per sprint. The tentative schedule for the quizzes:

  • Quiz 1: Friday, Feb 5
  • Quiz 2: Friday, Feb 19
  • Quiz 3: Friday, Mar 5
  • Quiz 4: Friday, Mar 26
  • Quiz 5: Friday, Apr 9
  • Quiz 6: Friday, Apr 30

Final Exam: There will be a three-hour cumulative exam during finals week.

Helpful Resources

Course Webpage

The official course webpage is at:

http://markandrewhopkins.com/csci-121-fundamentals-of-computer-science-i

Lecture videos, reading assignments, homework assignments, and projects will be regularly posted to the webpage.

Slack

The Reed Computer Science Slack workspace has a channel called #csci121. This is where I will post course announcements (including notifications that the webpage has been updated). It is also a good forum for asking questions to me, the course assistants, and your fellow students.

Office Hours

My office hours this semester are Monday, Wednesday, and Thursday 4-6pm. They will be by appointment. Sign up using this link.

Drop-In Tutoring

Drop-in tutoring happens every weekday evening, Sun-Thurs from 7-9pm.

Individual/Small Group Tutoring

Every Reed student is entitled to one hour per week of individual tutoring (or more with an accommodation) for every course, and you also have the option to pool tutoring hours with other students in the class to do multiple hours of small-group tutoring. Tutoring appointments can be made at https://iris.reed.edu/tutor/tutors/profiles for any time and place that works for you and your tutor. Please remember that tutors are busy Reed students too, and really appreciate it when you try to schedule appointments at least a few days in advance when possible.

DOJO Study Skills Workshops and Coaching

Reed offers a variety of workshops as well as individual coaching to help you learn study skills, time management, etc. Find further info here.

Course Materials

The main offline learning material for the course will be videos that will be posted on the course webpage. These will sometimes be augmented by notes and readings. There is no official textbook, but I will assign certain passages from Composing Programs, by John DeNero, which is freely available here.

Miscellaneous

Attendance

Attendance in lab and lecture is mandatory and absences will be penalized. There will also be material covered that is only discussed during the lectures. If attendance is difficult for you, either long-term (say, because of the time zone you are in) or temporarily, please talk to us. If you will be missing class for an excusable but foreseeable reason (say, a religious holiday), I expect you will inform me prior to the absence.

Collaboration and the Honor Code

Working on homework together can be useful and fun, and you are encouraged to do it, but keep in mind the following:

  • You are allowed to discuss homework with other students and even help a classmate find a bug in their code.
  • You are not allowed to give code to each other.
  • Each student must write up homework independently, and must do the actual programming on the homework and projects independently (except for group assignments).
  • Please acknowledge any collaborators when you submit homework/projects.

If you have any question about whether some level of cooperation is acceptable, please ask.

You are also allowed to look up general background on the internet. This can include looking up rules of Python syntax, for example. However, you cannot use the internet to find code that is intended to solve the problem you are trying to solve, or to copy such code.

Disability Accommodations

If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact your professor, and the Office of Disability Support Services (disability-services@reed.edu or 503-517-7921) as early as possible in the semester. Please be aware that requests may take several weeks to implement once approved, and that accommodations are not retroactive.

Covid-19 Policies

Because of all the meeting online, you need to have a stable high-speed internet connection, a webcam, and a microphone on your computer so that you can meet with the instructors, tutors, and other students online. You also need to be able to do the work on your own computer, meaning you must have a computer of your own that runs a Windows, Mac, or Linux operating system. If you’re worried about these requirements, please talk to me! I can try to get you what you need.

Students, staff, and faculty are expected to complete a health self-assessment each day to check for symptoms of COVID-19. This assessment tool will be available as a Qualtrics survey.

If you need to miss a class, or series of classes, due to illness, self-isolation, and/or quarantine, you are responsible for emailing me to let me know as soon as possible. You are also responsible for coordinating with me to complete work that you might miss due to absences. It can be tough to catch up after some time out of class, so let’s collaborate to make a plan for getting up to speed.

Finally, please let me know about any technical issues that might hinder your success in the course.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages