CS 367: Lecture 1 : Course Overview

 

Send a picture of yourself (face shot if possible)

to pubs@cs if you’re a cs major (ugrad or grad)

otherwise to vernon@cs.wisc.edu

Goal:  friendly, cooperative class

Introduce yourself to someone else in the class,

learn something interesting, then introduce to everyone else

 

Course Web Pages – lots of info

www.cs.wisc.edu/~cs367-3

contact info ;  check test email from class list;

set up forwarding; Unix tutorials (notices near elevators)

texts – useful, but not required, use as a reference

tutorials, JDB Tutorial, Java links

schedule of topics & notes

–       notes may be updated ;  CHECK DATES

–       print & read for Thursday:  Intro, Lists

assignments – p1 due Feb 1, pair programming advantages

exams, criteria for grading programming assignments (testing)

course grades:  programs, homeworks, exams

              extra credit:  borderline cases, letters of recommendation, “fun”

mechanics – course accounts, academic conduct

 

What will you learn?

Goal:  write good programs quickly

1)   new programming skills

e.g., thorough testing, new classes, exceptions, iterators, recursion

2)   repertoire of data structures

know what smart people have developed previously

e.g., list, stack, queue, heap, tree, graph, …

3)   repertoire of algorithms

- common operations on data structures (insert into heap)

- searching, sorting

          e.g., in the future, if you need to write a complex program, you

                   can decide whether you need a stack, queue, heap, …

 

What makes a program good?

          groups of 3-4, come up with list of good & bad characteristics

          discuss, make sure everyone contributes

–       it works  (i.e., it satisfies the specification & it doesn’t have bugs)

·       satisfying the specification is crucial in cs367

–       it is easy to understand, debug, modify & extend, reuse

·       compact modular code, concise top-level descriptions

·       documentation, good comments (develop comments w code)

–       it is efficient – efficient use of memory, efficient running time

–       efficient to create program – reuse previously developed code

–       user interface – clear prompts & messages,

catches all errors & handles them gracefully

 

Efficiency – especially analysis of how efficient an algorithm is –

will be an important theme of CS 367

 

Example:  searching

          Sequential search of unsorted list,

                                                  List of 7 names,   14 names,   N names

                   Avg running time:

                   Max running time:

 

sequential search of sorted list

          Binary search

 

In this course:  consider

–       best case running time,

–       average running time,

–       worst case running time,

–       how does the running time change when the size of the data is doubled