Class 56: Wrapup
Held Friday, May 14
- A definition of computer science, revisited
- Course evaluation
- Some final statements
- Handout: Notes on exam 3
- Final examination.
- Instituational end-of-course evaluations.
- The take-home end-of-course evaluations are due today.
- The final will be distributed (hardcopy only) today.
- Project reports are due today.
As you probably know by now, based on recommendations from the executive
council, the faculty have voted to try an experiment involving quantitative
end-of-course evaluations. The experiment is to determine whether such
evaluations can give an accurate numeric representation of the quality of
In order for the experiment to be valid, you need to take these forms
seriously, and not just fill in the blobs, but also include some text
explaining your answers.
This semester, the evaluations will only be used to evaluate the evaluation
system and not to evaluate faculty. In particular, the forms will only
be seen by members of the institutional research staff and by the faculty
you are evaluating.
If you have questions about the whole process, feel free to ask me inside
or outside of class.
I'll give you about fifteen minutes to fill out the end-of-course
evaluations. If you need more time, please let me know.
- Like many modern fields, computer science has segmented into a number
of subfields. There is some overlap between many of these subfields,
but there are also some clear divisions.
- Some of the ones that come to mind are ...
- Computer architecture -- the design and analysis of the
primary electronic components of computers.
- Programming languages -- the design, analysis, and
implementation of the languages we use to express computation.
- Algorithms -- the formal design and analysis of procedures
for solving problems.
- Computability theory -- the study of what can and cannot
be computed. (Yes, Virginia, their are problems which no computer
program can solve, even given a huge amount of time on an
unimaginably fast computer.)
- Human-computer interaction -- the study of how computers can
be made easier to use and how computers affect human task-completion
- Information retrieval -- mechanisms for organizing data for
quick access; models and systems for access to data.
- Operating systems -- how to provide a robust and reliable
computing system upon which other applications rely. Concerns itself
with processes (programs as they execute), memory, file systems, and
- Networking -- how computers can communicate with each other
reliably and quickly.
- Parallel and distributed computing -- the use and coordination
of multiple computers (and computer components) acting together.
- Applications -- the things we can do with computers.
- Software engineering -- the formal discipline of writing
- Artificial intelligence -- the attempt to simulate human
thought processes on computers.
- Social issues -- the effects of computers on humans and society.
- Multimedia -- the electronic integration of text, audio, video,
graphics, animations, .... Often, the study of multimedia involves
studying another subfield in the context of multimedia. For example,
successful use of multimedia requires different networking starategies
then we've traditionally employed.
- We offer courses in many of these areas, and I encourage you to consider
We've covered many topics in these fourteen weeks. Here are some of them.
- Exceptions and exception handling
- Pre- and postconditions
- Separation of interface and implementation
- Shared development with CVS
- What is Object-oriented programming?
- How does it relate to procedural and functional programming?
- Inheritance; superclasses; subclasses
- Object-oriented design
- Language basics: variables, references, primitive types,
control structures, objects, constructors, methods
- Classes vs. Objects
- The AWT and GUIs
- Algorithm analysis
- Big-O notation
- Algorithm measurement
- Tail recursion
- Algorithm design techniques
- Divide and conquer
- Dynamic programming
- Greedy algorithms
- Insertion sort
- Merge sort
- Quick sort
- Linked lists
- Doubly linked lists
- Implementation with arrays
- Linear structures
- Priority queues
- Hash tables
- Bits, bytes, and words
- Various integer representations
- IEEE floating point representation
- Image representation
- Run-time issues
- Graphics in Java
- Electronic imaging
- Automated puzzle solving
- My mother taught Psychology at Boston University for over thirty
years. (``Aha, maybe that explains SamR's warped personality''.)
She ended every class with a similar statement. I try to do the same,
although the statement is filtered through my sensibilities.
Most of us will take or teach other classes. However, this one is
unique; none will ever be quite like this it for a number of reasons.
The people in the class made it what it was. We should acknoledge
each other's contributions and commit ourselves to making similar
contributions in future classes. In paritcular, I thank all of you for your
- Mom also makes a statement on the order of
While I enjoyed having you in my class, I'm also happy to have you
move on to other things. Like any parent or mentor, I've enjoyed seeing
you grow, but also want you to test your own wings.
- Mom also tells a story of an elementary school teacher she had worked
with who was leaving her job. Mom stopped by to give the teacher a
goodbye present. The teacher cried. Mom said ``I expect that you've
been crying all day as you said goodbye to your students'' The teacher
said ``No, I forgot to say goodbye''. Since then mom has always made it
a point to say goodbye to her classes. I encourage you to say goodbye
to your friends and colleagues who you may not see again.
- Created Monday, January 11, 1999.
- Added short summary on Friday, January 22, 1999.
- Filled in the details on Sunday, May 9, 1999.
Many of the details were taken from
outline 53 and
the final review sheet from