Course Information
Course Title | Intensive Fundamentals of Computer Science |
Course Number | CS 5001 |
Semester | Fall 2017 |
Lectures | Tuesday 6-9pm, 401 Terry Ave, Room 106C |
Labs |
Section A: Wednesday, 2-5pm, 225 Terry Ave, Room 307
Section B: Wednesday, 6-9pm, 225 Terry Ave, Room 307 |
Prerequisites | None |
Contact Information
Role | Name and Email | Address |
---|---|---|
Instructor |
Therapon (Theo) Skoteiniotis Use Piazza |
TBD |
Instructor |
Maria Zontak Use Piazza |
TBD |
Assistant |
Jie Lu Use Piazza |
|
Assistant |
Susanna Edens
Use Piazza |
|
Assistant |
Min Dai
Use Piazza |
|
Assistant |
Irena Kushner
Use Piazza |
Office Hours
Instructor's Office Hours
By appointment. Please use Piazza to message us directly and setup an appointment.
Assistants' Office Hours
Day | Time | Location | TAs |
---|---|---|---|
Monday | 2-4pm | WHIDBEY | Min Dai, Irena Kushner |
Monday | 5-6pm | Outside ORCAS room | Baoheng Ling |
Tuesday | 2-4pm | PEARL | Min Dai, Susanna Edens |
Wednesday | 5-7pm | VASHON | Jie Lu |
Thursday | 2-4pm | CAMANO | Irena Kushner |
Friday | 10am-12pm | VASHON | Jie Lu |
Friday | 2-5pm | CAMANO | Susanna Edens |
Saturday | 1-3pm | BAINBRIDGE | Baoheng Ling |
Course Description
This course is an introduction to computing and programming. Its major goal is to introduce students to the principles of systematic problem solving through programming and the basic rules of computation. The course does not assume any prior programming experience. It is therefore suitable for students, majors and non-majors alike, who wish to explore the intellectual ideas of the discipline.
Grading Policy
The class will consists of individual assignments, team assignments and a midterm.
Individual Assignments | 37% |
Midterm | 30% |
Final | 30% |
Instructor's discretion | 3% |
The final grade for a student is calculated as the weighted average of the preceding list and rounded up to the nearest integer. The mapping to a letter grade uses the following scale
A | [95, 100] |
A- | [90, 94] |
B+ | [85, 89] |
B | [80, 84] |
B- | [75, 79] |
C+ | [70, 74] |
C | [65, 69] |
C- | [60, 64] |
D | [0, 59] |
Extensions
Late assignments will not be accepted unless you have explicit instructions from the instructor. If you are to miss lectures or require an extension for a deadline, ensure you inform the course staff in advance. The earlier we are informed the easier it will be to accommodate your request.
Textbooks
Required
- Felleisen, Findler, Flat, Krishnamurthi. How To Design Programs, First Edition, MIT Press, 2001.
The course will be following the first edition of the book. The second edition (draft) of the book is in progress, and serves as an excellent alternative resource as the two editions focus on the same design principles.
Recommended
- Bice, DeMaio, Florence, Lin, Lindeman, Nussbaum, Peterson Plessner, Horn, Felleisen, Barski.
Realm of Racket. No Starch Press. 2013.
The design ideas are equally applicable to JS, Perl, Python, Ruby and Racket. Realm is a non-text-book that bridges the gap between the programming languages used in this course and Racket programming.
- Friedman, Felleisen. The
Little Schemer: Fourth
Edition MIT Press, 1996.
An alternative introduction to recursive programming
- Friedman, Felleisen.
The Seasoned Schemer. MIT Press, 1996.
More on functional and imperative programming
- Felleisen, Friedman.
A Little Java, A Few Patterns. MIT Press, 1998.
Why all this matters and how it scales to Java
-
Abelson, Sussman and Sussman. Structure and Interpretation of Computer Programs. MIT Press 1996.
Explanation of core computer science concepts in Scheme.
- Strunk and White.
The Elements of Style. Bartelby.Com, 1918.
There is no better book on style in writing (anything).
Attendance
You are expected to attend all lectures and all code walks.
Missing Lectures
If you have to miss a lecture please inform the course staff. Materials covered for each lecture, readings, tutorials, assignments, are available on the course web page.
Assignment Extensions
Assignment extensions are at the discretion of the instructors. If you would like to discuss a possible extensions talk to the course instructors in advance (minimum of 48 hours).
Academic Honesty
You are expected to read, understand, and follow the University’s policies on Academic Integrity
During assignments you are encouraged to discuss the problem with classmates on piazza or other forums. You are however not allowed to share solutions.
Working Individually
All work submitted for assignments expected to be completed individually must be your own work. You are not allowed to share code. Code that is identical or similar will be penalized and reported to the appropriate University authorities.
Working in Teams
All work submitted for assignments expected to be completed as a team must be the team’s work. You are not allowed to share code with people outside your team or with another team. Code that is identical or similar will be penalized and reported to the appropriate University authorities.
Tips for Success
You cannot learn everything you need to know in lectures or homeworks. You must:
- Read the Book (How to Design Programs).
Try to stay ahead of the game and read material before it is covered in class. If you have questions, write them down. If these questions don't get covered, ask in class or meet with the tutors, lab coordinator, or professor.
- Attempt to solve additional problems.
Try to solve as many exercises as possible as you read sections in the book. If you can't do them, read the material again.
- Attend lectures.
Lectures accentuate the material you should have already read from the book. Take advantage of the extra explanations and examples during the lectures to ensure you comprehend the material. Prepare questions to ask, but also listen to questions asked by your classmates.
- Talk to the course staff.
If the lecture and the notes leave you with questions on the material, see your teacher(s) during office hours or make an appointment. Mark the passages in the book(s) that you do not understand, and prepare questions that express what you do not understand.
- Keep up.
Experience proves that students who fall behind quickly drop out. So, keep up with the readings, tutorials, and the homeworks. Ask for additional problems, if the homeworks failed to make a point.
Diversity/Disability Statements
If you require support during the course due to a disability please ensure that you are already registered with the University’s Disability Center, and contact your course instructors to coordinate any support needed during the course.
Software
The course will be making heavy use of the following software
- DrRacket
- Git
- CCIS GitHub instance (NOTE: This is not the public GitHub, but rather the Department's own GitHub instance.)
Helpful Links
Browser Compatibility
This website has been tested with the following browsers- Internet Explorer version 10 (or above)
- Chrome version 44 (or above)
- Firefox version 40 (or above)
- Safari version 7 (or above)