# What I Hope You Learned in CSC151

Summary: This document summarizes the many things I tried to help you learn in the course. Some, I tried direct methods to help you learn. Others, I hope you learned indirectly. I've tried to group these ares from specific to general.

Contents:

## Scheme

You should have learned many details of the Scheme programming language in this course, Here are some of the details of the language I hope you remember.

• Minimality and elegance in language definition.
• Defining functions and values.
• Including local definitions.
• Simple data types: booleans, numbers, strings, characters.
• Distinguishing between kinds of numbers.
• The benefits of arbitary-size integers.
• Lists as a built-in data type.
• Vectors as a built-in data type.
• File input and output.
• Conditionals.
• Variable-arity procedures.
• Recursion.
• Special case: Named let.
• Applications:
• Web services.
• Graphics.
• Games.

## Computer Science

I hope you learned many general topics in computer science, particularly with regards to abstract data types and algorithms. Some of these issues have been covered above, but there are others, too.

### General

• Preconditions and postconditions.
• Carefully specifying problems.
• Recursion as a design technique.
• Documentation.
• Testing.
• Records and objects.
• Information hiding.
• Generalizing specific problems.
• Elegance and good practices.

### Functional Programming

The functional paradigm is one of many ways to approach problem solving. Here are some key issues that I hope you mastered.

• Organizing data in lists and vectors.
• Procedures as data and higher-order procedures.
• Particular higher-order procedures: apply, map.
• Symbolic data.
• Recursion.

### Algorithms

As I've said many times, computer science is the study of algorithms. I hope you've learned some things about algorithms and algorithm design.

#### Algorithm Design

• Recursion as a design technique.
• Divide-and-conquer.
• Encapsulating general algorithms in higher-order procedures.

#### Standard Algorithms

• Searching
• Sequential search.
• Binary search.
• Sorting
• Insertion sort.
• Selection sort.
• Merge sort.
• Quicksort.

#### Abstract Data Types and Data Structures

Closely tied to most algorithms are the structures we use to organize the data we manipulate in those algorithms.

• Lists.
• Vectors.
• Lists vs. vectors.
• Recursively defining data.
• Association lists.

## General Areas

Issues not only pertinent to computer science and problem solving.

### Intellectual Skills

• Group work (at least for some of you).
• Willingness to take risks.
• Willingness to critique the work of others.
• Ability to think on your feet.

### Perspectives

Ways to approach the world.

• You can have fun while doing serious work (or vice versa).
• Grammar and spelling are important and interesting, no matter what the context.
• Feed people!
• Computers are sentient and malicious.

### Moral Modeling

When I was midway through college, my mother mentioned that she was thinking about starting research on the professor as moral model. At the time, I thought she was silly, as I couldn't recall any professor who had served as a moral model for me. However, now that I, too, am a professor, I think my mother is right. Faculty can serve as moral models. Here are some of the things I hope I modeled for you.

• It is important to treat others as people.
• People are more important than classwork.
• It's okay to admit failings.

We all need safe places in which to express our ideas. I hope I created one for you.

## History

Friday, 9 May 2003 [Samuel A. Rebelsky]

• Created.

Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Fri May 9 12:16:17 2003.
The source to the document was last modified on Fri May 9 12:16:11 2003.
This document may be found at `http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2003S/Handouts/learned-cs151.html`.

You may wish to validate this document's HTML ; ; Check with Bobby

Samuel A. Rebelsky, rebelsky@grinnell.edu