CSci 1301: Problem Solving and Algorithm Development -- Syllabus

[Home] [Syllabus] [Assignments] [Resources]

The syllabus will be updated throughout the semester. Dates, topics, assigned reading, and problem set due dates will be added or might change. All changes in assigned reading and due dates will be announced in class (and occasionally by e-mail). While I will do my best to update the web site accordingly, it is a student's responsibility to keep track of the problem set due dates and reading assignments. If you are not sure about due dates, please don't hesitate to ask.

Reading assignments are listed for the day when the material is first explained in class. You may read the material ahead of the lecture or after, either way is fine.

The dates for the midterm exams are set and will not change. If you have a conflict with these dates, please let me know right away. No makeup exams will be given unless there are circumstances beyond your control AND the makeup time is arranged in advance.

In addition to exams there will be 5-8 short in-class quizzes throughout the semester. Quizzes will not be announced in advance. The lowest quiz grade will be dropped (i.e. not counted towards the quiz total). A missed quiz will receive a grade of zero and thus will be counted as the lowest grade, unless it was missed due to an illness or other circumstances beyond your control. If you missed a quiz or a lab because of an illness or similar circumstances, it is your responsibility to communicate these reasons to me as soon as possible and arrange for a make-up work.

The midterms, the final, and quizzes are open book, open notes, unless stated otherwise.

Policies on Collaboration and Use of Resources

Problem sets and labs are individual work, unless otherwise stated. While it's perfectly OK (and is encouraged) to discuss problem sets in general terms with others in the class, your solution must be your own work (i.e. written or coded by you without using anybody else's materials). Copying any part of another person's solution (even if you modify the code) is considered academic dishonesty and will be dealt with according to the university's policy.

You may use electronic resources for problem sets to get general ideas for your solutions as well as to help in fixing errors. However, you may not copy a code fragment found online into your solution. Use of sources other than the textbook and the handouts given in class must be acknowledged in the beginning of the problem solution. For take home tests please follow the instructions on the test to determine appropriate resources. Use of any materials from previous runs of this class is not allowed.

If in doubt whether a resource is appropriate for a given problem set, please ask.

Late problem sets policy: Problem sets are due in the beginning of the class on the due date, unless a different time is specified for an electronic submission. If a problem set is submitted at (or before) the next class meeting after the due date, it is graded out of 3/4 credit. If it is submitted any time after the next meeting (until the last class meeting), then it is graded out of 1/2 credit.

Groups for labs and problem sets

Hand in one assignment from the entire group with names of both students on the first page. If submitting by e-mail, you must CC it to all your partner(s). In a programming assignments make sure to keep track (in comments or in some other electronic form) of each partner's contribution to the work.

Generally all group members get the same grade for the submitted group work. If you feel that your group members are not contributing the way they should or if there are any circumstances that prevent you or you partner from contributing a fair share, please talk to your partners to work out an arrangement (if possible) and in either case let me know right away. If after the assignment is finished you feel that the group members have contributed unevenly, please talk to me and I'll try to come up with a fair grading strategy.

Discussion with students other than those in your group (or anyone not in this class) should be limited to general approaches to the problem. All such discussions as well as use of sources other than the textbook and the handouts given in class must be acknowledged in the beginning of the problem solution.

Studying in groups

Studying in groups is strongly encouraged. You may study for tests, go over textbook materials or lecture notes, and discuss problem sets in general terms (i.e. without actually writing the formulas or giving out the answers).

Use of electronic devices

Use of laptops for class-related activities is usually allowed, except for test time and other specific assignments. Laptops and other devices may not be used for activities unrelated to the class work (checking e-mail, text messaging, etc.). The instructor reserves a right to ask a student to leave the class if the student uses electronic devices inappropriate in a class. No communication devices can be used during a test, including quizzes. If you are taking notes on your laptop, you are not allowed to access anything other than your notes during a test.

The language that we will be using has recently been renamed from Scheme to Racket: The book still uses the name Scheme, although the language downloads use the name Racket. The syllabus and assignments use the name Scheme to be consistent with the book. If you have questions, please ask.

Course topics and timeline

Monday Wednesday Friday
Week 1: August 25 - 27
Summer break, no class Introduction. Course overview, course policies. Role of computing and problem solving in the modern world. Notion of an algorithm and a program.
Reading: Ch. 1, 2.1, 2.2.
Week 2: August 30 - September 3
Introduction to DrScheme.
Problem solving using Scheme.
Problem set 1: Introduction to DrScheme. Due Wedn., Sept. 8.
Using DrScheme in the lab.
Problem solving using Scheme (cont.).
Reading: Ch. 2.3, 2.4, 2.5.
Functions and variable definitions.
Reading: Ch. 3.
Week 3: September 6 - 10
Labor day, no class. Exercises on functions and variable definition.
Problem set 1 due
Problem set 2: Functions and variable definitions. Due Wedn., Sept. 15.
Conditional expressions and functions.
Reading: Ch. 4.
Week 4: September 13 - 17
Conditional expressions and functions (cont.).
Symbolic information.
Reading: Ch. 5.
Problem set 2 due
Problem set 3: Conditional expressions and symbolic information. Due Wedn., Sept. 22.
Compound data.
Reading: Ch. 6.
Week 5: September 20 - 24
Compound data (cont).
Mixed data.
Reading: Ch. 7, intermezzo 1.
Problem set 3 due
Problem set 4: data handling in Scheme. Due Wedn., Sept. 29.
Structures (cont.)
Week 6: September 27 - October 1
Intermezzo 1 (programming languages syntax and semantics). Intermezzo 1 (cont.)
Problem set 4 due
Problem set 5: Intermezzo 1. Due Mon., Oct. 4.
Reading: Ch. 9, 10.
Week 7: October 4 - 8
Natural numbers, composing functions.
Reading: Ch. 11, 12
Review for Midterm I.
Problem set 5 due
Midterm I (in-class portion)
Take home exam I posted. Due Mon., Oct. 11.
Lists, natural numbers
Reading: Intermezzo 2.
Week 8: October 11 - 16
Self-referential data definitions.
Reading: Ch. 14.
Take home I due
Problem set 6: List processing. Due Wedn., Oct. 20.
Mutually referential data definitions.
Reading: Ch. 15.
Development through iterative refinement.
Reading: Ch. 16.
Week 9: October 18 - 22
Fall break, no class Local definitions and lexical scope.
Abstracting designs
Reading: Intermezzo 3, Ch. 19, 20.
Problem set 6 due
Problem set 7: Abstracting designs. Due Wedn., Oct. 27.
Abstracting designs (cont.)
Designing Abstractions from examples.
Reading: Ch. 21.
Week 10: October 25 - 29
Designing abstractions with first-class functions.
Reading: Ch. 22, 23.
Defining functions on the fly.
Reading: Intermezzo 4.
Problem set 7 due
Problem set 8: first-class functions. Due Wedn., Nov. 3.
Generative recursion.
Reading: Ch. 25, 26.
Week 11: November 1 - 5
Generative recursion.
Reading: Ch. 27.
Backtracking algorithms.
Reading: Ch. 28.
Problem set 8 due
Problem set 9: generative recursion. Due Mon., Nov. 8.
Efficiency considerations.
Reading: Intermezzo 5.
Week 12: November 8 - 12
Discussion: recursion as a problem-solving approach.
Review for Midterm II.
Problem set 9 due
Midterm II (in-class portion).
Take home exam II posted. Due Mon., Nov. 15.
Accumulator-style functions.
Reading: Ch. 30, 31.
Week 13: November 15 - 19
Accumulator-style functions (cont.)
Reading: Ch. 32.
Take home exam II due
Problem set 10: accumulator-style functions. Due Mon., Nov. 22.
Accumulator-style functions (cont.)
Assignments to variables.
Reading: Ch. 34, 35.
Week 14: November 22 - 26
Functions with memory.
Reading: Ch. 36.
Problem set 10 due
Problem set 11: project (making a small game). Due Wedn., Dec. 8.
Memory usage. Syntax of Advanced Scheme.
Reading: Ch. 37, intermezzo 7.
Thanksgiving holiday - no class
Week 15: November 29 - December 3
Differences between functional and imperative languages.
Introduction to Clojure.
Project help in the lab. Introduction to Clojure.
Week 16: December 6 - 10
Introduction to Clojure.
Game presenations (day 1).
Problem set 11 due
Game presenations (day 2).
Review for the final.
Absolutely last day to submit all late problem sets!
Final exam: Tue., Dec. 14 2010 8:30-10:30am in Sci 1030.

The views and opinions expressed in this page are strictly those of the page author. The contents of this page have not been reviewed or approved by the University of Minnesota.