Course Syllabus
CS 189: Programming Practicum - Fall 2016
Instructor: Colleen Lewis lewis@cs.hmc.edu
No in-person meetings required.
The goal for CS189 is for you to have the opportunity, structure, and support to learn and do CS! This semester we'll be having a variety of options. No mater what you need to commit an average of 4 hours per week to practicum.
Your options are to work with Prof. Hamilton, make something, solve problems, teach others in CS189, or learn from others in CS189. You are strongly encouraged to work in pairs or groups, but will submit all of your assignments/reports individually. (Just mention your collaboration in your homework assignments).
Option 1: Work with Prof. Hamilton
Prof. Hamilton is launching a new digital humanities course in the spring examining the history of popular science. She is looking for students to try out some of the programming skills that will be part of the course. You will be developing tools for gathering content from online archives of digitized texts (newspapers, textbooks, science magazines, etc) as well as tools for analyzing and pulling out patterns from large blocks of text. You will work through tutorials found here: http://programminghistorian.org/lessons/
Why you should do this: You'll learn things & help out Prof. Hamilton! There are tons of intersections between computing and other disciplines - your work can help future 5Cers work at that intersection! This has a bit more structure than others so might be a good thing to try if "do something" seems a bit overwhelming. You can put this on your resume.
Option 2: Make something
Do you have a project you've been wanting to work on? Do you have a technology that you've wanted to learn? Now is the time! This is a great opportunity to teach yourself something. Here are some past projects: https://www.cs.hmc.edu/twiki/bin/view/CS189Spring2016/PastTopics
Why you should do this: It can be helpful to try to do something specific when you're trying to learn something. A lot of tech jobs like it when you've made something "outside of class" - and the fact that this is self-directed will help with that. You can put this on your resume.
Option 3: Solve problems
Do you like to solve problems? (and/or) Do you want to practice for CS interviews? Awesome! Solve some ACM-programming problems (available here: https://uva.onlinejudge.org/). (If you've taken fewer CS classes - you can solve problems here http://codingbat.com/ - Just make sure you're solving problems that are hard-ish for you) You'll solve problems and get better at programming!
Why you should do this: CS takes practice. Solving problems can provide some structured practice for some of the stuff that is super valued in CS jobs and CS interviews. This can help you in interviews.
Option 4: Teach others in CS189
Do you like to teach and know something (related to CS) that you think other people might want to know, but won't necessarily learn in a class? Awesome! You'll make a teaching plan, schedule it, advertise the opportunity (to the class - and possibly Mudd community), and then teach people things. You'll need to recruit at least 2 students to agree to participate in your class. You can see an example of "teach others in CS189" from Alex Ozdemir.
Why you should do this: You can learn a LOT by teaching! It is helpful to other people who get to learn! It is fun to teach people things! You can put this on your resume.
Option 5: Learn from others in CS189
Do you want to learn things from other people in CS189? Awesome! When people in CS189 offer to teach you things, you can participate and then count that toward your hours for the class. Note - we encourage you to learn about memory safety from Alex Ozdemir - if you do, you'll do all of your hours in the 2nd half of the semester. You'll submit the Semester Plan assignment, but will not submit status reports. See Alex's description of the opportunity here.
Why you should do this: You can learn things! And this is super helpful to people who want the opportunity to teach people things!
How is the course graded?
The goal is for the grading to be clear and simple. There is no weighting or scaling of points. Please let me know if you have any questions. You'll need to keep track of what hours you work (the goal is 4 hours a week) because you'll put these in your weekly status report.
Course components (Totaling 100 points):
- Status Reports: 78 points. There are 13 status reports (no status report due fall break 10/18 or the Tuesday after Thanksgiving 11/29). Each one is worth 6 points and requires you to list how many hours you worked (4 hours is the goal for each).
- Semester Plan: 6 points.
- Mid-semester Update: 6 points
- End-of-semester Update: 10 points
The grade boundaries are listed below. In a Racket comment I've noted about how many hours of work this assumes you completed on average each week. However, this assumes that everything was submitted on-time and clear. Each assignment has at least 1 point assigned for clarity (i.e. included the necessary information such that we understood it) and 1 point assigned for being submitted before the deadline of Tuesday at 11:59pm.
(define (grade p)
(cond
((>= p 93) "A") ; everything on-time & clear + average of >3.5 hours per week
((>= p 90) "A-") ; everything on-time & clear + average of >3.25 hours per week
((>= p 87) "B+") ; everything on-time & clear + average of >3.0 hours per week
((>= p 83) "B") ; everything on-time & clear + average of >2.75 hours per week
((>= p 80) "B-") ; everything on-time & clear + average of >2.5 hours per week
((>= p 77) "C+") ; everything on-time & clear + average of >2.25 hours per week
((>= p 73) "C") ; everything on-time & clear + average of >2.00 hours per week
((>= p 70) "C-") ; everything on-time & clear + average of >1.75 hours per week
(else "we hope not to have to use this condition")))
FAQ:
Can you make-up hours?
You can work extra hours to make up for not working 4 hours the week before or to work ahead for the following weeks. There is no limit to how far in advance you can work (you could do the total required 52 hours in the first 3 weeks), but you can only make up hours for the previous week. We haven't figured out a great way to keep track of this hour shifting, but we'll let you know when we do! :-) Note - if you're participating in Alex Ozdemir's class, you won't be submitting status reports, you'll just submit the first project description saying what your plan is - so that we don't send you too many reminder emails to fill out the status report :)
Can I take CS189 multiple times?
You can take CS 189 as many times as you’d like. (At most 3 units can be applied to the “CS Elective” requirement of a CS or CS/Math major.)
Can I continue a project that I have already started?
Yes - You’re certainly welcome to propose a project that builds on something you’ve done in the past, in a class or elsewhere. We want to focus on you learning new things - so please emphasize how this isn't just "a bit more" of something you've already done.
I have a question! What should I do?
Email me - lewis@cs.hmc.edu :-)
Course Summary:
| Date | Details | Due |
|---|---|---|