Functional Problem Solving (CSC 151 2014F) : EBoards

# CSC151.01 2014F, Class 56: Wrapup

Overview

• Preliminaries. [10:00-10:05]
• Admin.
• Upcoming Work.
• Extra Credit.
• Questions.
• The subject matter(s) of the course.
• Review broad topics [10:05-10:10]
• Contribute [10:10-10:30]
• Sam comments [10:30-10:35]
• Course evaluation. [10:35-10:45]
• Final comments. [10:45-10:50]

## Preliminaries

### Admin

• Thanks to our mentors!
• Final PSA for this class.
• I need a volunteer to take EOCEs to Science Division Office.
• Continued MathLAN problems mean that most, but not all, grades are entered. For those receiving grades after class, your ultimate grade will not be lower.

### Upcoming Work

• Course evaluation (last part of class)
• Optional final (Tuesday at 9 or Friday at 9; Food!)

### Extra Credit Opportunities

#### Peer Support

• Evan's radio show 5pm Friday nights on KDIC
• Donna's radio show Sunday midnight on KDIC (maybe)
• Jazz Band, Dec. 13, 8pm Gardner
• Monday night "With Toy Trains" study break with Noteworthy

### Additional Events

• Looking ahead: We do not have classes on MLK day, but we do have campus events. You should consider participating in those events.

## The subject matter(s) of the course

We're talking about these issues because five of the six questions ask you to think about "the subject matter of the course". I think it's worthwhile to talk to you a bit about how you might describe such a thing.

Review broad topics [10:05-10:10]

### Scheme

Scheme is a language for expressing programs/algorithms.

• Local bindings and let
• Ways to sequence values
• Compose, `o`
• Nesting
• `let*`
• Continuations
• `when`
• A sequence of expressions in the body of a procedure or `let` statement.
• How to do recursion in Scheme
• letrec
• named let
• ...
• Types
• Boolean values are cool (George Boole rocks!)
• Conditionals
• if, cond, when
• Higher-order procedures
• You can take procedures as parameters or return procedures
• "The one on the quiz"
• `map`
• Constructing other procedures
• We learned like 2000 different procedures. yay vocab!
• You can learn a whole lot of CS with just one language.

### Software Design

When we think about software design, we think about how to write better programs.

• Identify preconditions and postconditions.
• Check preconditions.
• Test your programs using a testing framework, like Rackunit.
• Be concise.
• Objects.
• We are sometimes more efficient coders if we write helper functions to do some of the work. Helpers also make our code more readable.
• Creativity - There's more than one way to make a sandwich.
• Efficiency - Bad design means that programs run a long time. The folks who built our Web advisor software need to learn that.
• Ordering is important.
• Be careful.
• Scope: Limit how data can be accessed
• Higher-order-programming

### Computer Science

CS is the study of algorithms and data structures.

• The components of an algorithm
• Variables and Parameters (two kinds of named things)
• Subroutines (another kind of named things)
• Repetition
• (Input and output)
• Conditionals
• Sequencing
• one more that you should think about
• Recursion - We can define a procedure in terms of itself.
• Objects.
• Ethics of building software and computing: Roles of free software.
• Relationships between iteration and recursion as ways to repeat.
• The power of randomness.
• "Great ideas in CS"
• Data structures: Linked lists
• Algorithms: Sorting algorithms (insertion, selection, merge)
• Searching algorithms (binary, sequential)
• Not all problems can be solved algorithmically

### Image Making

We tried to help you think differently on what goes on "under the surface" of an image.

• Model: `image-compute!`
• Turtles are a really slow model. (So is image-compute!)
• GIMP!
• By hand
• Programatically
• It's possible to design really cool software that's really not intuitive.
• There are many ways to achieve the same result; think about which one is likely to work best.

### General Skills / Ideas

• Group work - How to interact with other people when working on projects.
• Thinking on your feet.
• Careful reading/editing.
• Benefits of reflecting in advance and retrospectively.
• Time management (aka "how to deal with way too much work and an expectation that you can fit meetings with other people into a Grinnellian's schedule)
• Know about laws, such as academic honesty standards.

### And Beyond

• It's important to make friends and you can do so while working together.
• Effort and time do not necessarily correlate with success.
• "Save Early and Often"
• "There's more to life than CS" (or any academic discipline)
• "Computers are Sentient and Malicious"
• "Be full of care."
• It's always okay to ask for help. (And know that you're not alone.) Your turn [10:10-10:30]
• "Sleeping, that's important!"
• You have amazingly awesome people around you. Learn what they do and support them in it!
• The College has really cool academic talks and other things. Take advantage of them!
• Eat, bubala, eat!
• Please think carefully about how you relax.

• Three minutes with your partner: Five things to add.

• We'll get as many down as we can.

My turn [10:30-10:35]

• Course evaluation. [10:35-10:45]
• Final comments. [10:45-10:55]