Welcome to Computer Science III - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

Welcome to Computer Science III

Description:

Welcome to Computer Science III ... The job market is (usually) very good ... mouse, the World Wide Web, the popularity of Java, the ascendance of XML, etc. ... – PowerPoint PPT presentation

Number of Views:36
Avg rating:3.0/5.0
Slides: 32
Provided by: david2775
Category:

less

Transcript and Presenter's Notes

Title: Welcome to Computer Science III


1
Welcome to Computer Science III
  • The slides I will be using for this course are
    adapted from David Matuszek on-line course guide
    at http//www.cis.upenn.edu/matuszek

Ms. Van Nes Mercy High School
2
Why are you here?
  • There are two good reasons for getting into
    computer science
  • The job market is (usually) very good
  • Computer programming can be extremely satisfying
    and enjoyable
  • To fulfill an elective requirement
  • Which of these is more important?
  • Money is a necessity
  • Being rich isnt a necessity (but it sure is
    nice)
  • You spend about 1/4 of your adult life working
  • Its important to find work that you enjoy

3
What are you getting yourself into?
  • Programming is intellectually challenging
  • It can be tremendous fun
  • if you like that sort of thing!
  • Lifelong learning is essential
  • The technology is constantly changing
  • We cannot teach you all you need to know
  • We can point you in the right direction and give
    you a good, hard push--but the rest is up to you!

4
Programming can be fun
  • Programming is puzzle-solving
  • Very little is mechanical, routine work
  • You always have to be thinking
  • If you like solving puzzles, theres a good
    chance you will like programming
  • Some puzzles are hard
  • You need a tolerance for frustration
  • Solving hard puzzles can be very satisfying

5
Computer Science
  • Computer science is the study of
  • what we can do with computers
  • how we can best do it
  • If we really understand how to do something, we
    can write a program to do it
  • We do a lot of things without really
    understanding how we do them
  • Computer science is all about how to do things

6
CS III is a programming course
  • Programming is teaching the computer how to do
    something
  • Programming, like woodworking, is a craft
  • To master a craft, you need both knowledge and
    experience
  • Even a poor woodworker can produce a useable
    chair
  • A master craftsman can produce a chair that is
    strong, comfortable, and beautiful

7
Beauty in computer science
  • Programs can be beautiful or ugly
  • I am not speaking metaphorically
  • Usually,
  • Blind people cant appreciate fine paintings
  • Deaf people cant appreciate good music
  • Non-mathematicians cant appreciate elegant
    proofs
  • Non-programmers cant appreciate the beauty in
    programs (but can often feel the lack of it!)

8
Basic esthetics
  • People have different tastes in music, but
  • A two-year old pounding on a piano is not making
    music
  • Very few musicians disagree on what notes make up
    a chord, or a chord progression
  • People have different tastes in programming, but
    many values are held in common
  • Programming is an art as well as a craft

9
Elegance
  • Powerful software can do everything you want to
    do--for example, Microsoft Word
  • Complex software is hard to learn and hard to
    use--for example, Microsoft Word
  • More power usually means more complexity
  • Elegant software somehow manages to be both
    simple and powerful

10
Elegance in mathematics
  • In school, the mathematician Johann Carl
    Friedrich Gauss was told to add up the numbers
    from 1 to 100
  • Gauss realized that 1 100 101,2 99 101,
    3 98 101, and so on
  • There are fifty such pairs
  • The answer must be 50 x 101, or 5050
  • This is elegant it saves work, and its easy to
    understand

11
Beauty in programming
  • Outer beauty in programs consists of
  • Doing a job the way the user wants it done
  • Providing a simple, intuitive set of controls
  • Working reliably, without crashes or glitches
  • Inner beauty in programs consists of
  • Simple, elegant, efficient solutions to problems
  • Code that is easy to read, understand, and modify
  • Good commenting and coding style

12
Elegance in programming
  • Consider the following problem
  • You are given a stack of cards, allegedly
    containing the numbers 1 through 100...
  • but there are only 99 cards
  • How do you determine which card is missing?
  • One solution
  • Go through all the cards looking for 1, then do
    it again looking for 2, etc.
  • Is there a better way?

13
Elegance, again
  • Suppose you are given a deck of 51 playing cards
  • How do you decide which card is missing?
  • Can you adapt Gausss solution to this problem?
  • Suppose you are given one thousand decks, each
    missing one (not all the same) card
  • For each deck, you want to find which card is
    missing
  • Would the large number of decks change the way
    you solve the problem?

14
What this class is about
  • You need to learn the craft of programming
  • How to design and write programs that work
  • How to write clear code and documentation
  • This is a skill, and it requires a lot of
    practice
  • In this class we study programming
  • You learn a language (Java 2) and some basic
    skills
  • You learn how to use the language to tell the
    computer how to do things
  • In this class we concentrate more on computer
    science
  • Remember what I said If you really understand
    how to do something, you can write a program to
    do it
  • Computer science is all about how to do things

15
Out with the old, in with the new
  • Geometry is about 2300 years old
  • Its all based on straight lines and circles
  • These were viewed as idealizations of nature
  • There are no straight lines or circles in nature
  • Didnt anybody notice?
  • Benoit Mandelbrot developed fractal geometry
    starting in about 1977
  • Even in a 2300 year old subject, things change!

16
Changes in computer science
  • Computer science is only about 55 years old
  • Its changing much faster than geometry!
  • Java is about seven years old
  • We will be covering Java features that didnt
    exist this time last year
  • Change is rapid and accelerating
  • Dominant language of the 1990s C
  • Dominant language of early 2000s Java
  • Dominant company IBM to Microsoft to ?
  • First GUI Macintosh, 1984
  • First web browser Mosaic, 1992
  • Web pages HTML to DHTML to XML

17
Whats ahead?
  • Half-life of CS knowledge about 5 years
  • Typical length of career about 40 years
  • What does this tell you?
  • Nobody expected personal computers, graphical
    user interfaces, the mouse, the World Wide Web,
    the popularity of Java, the ascendance of XML,
    etc.
  • There is only one safe prediction
  • You will be taken by surprise!

18
Maybe you should learn accounting instead?
  • What can we possibly teach you that will do you
    any good five years from now?
  • Many underlying programming concepts and
    mathematical foundations dont change
  • Programming paradigms change slowly
  • Each new language you learn will be easier to
    learn than the previous one, because most of the
    ideas in it will be familiar

19
But more importantly...
  • The attitude you need doesnt change
  • Always be prepared to learn
  • Take pride in your work, but--
  • Realize that your work is not, and can never be,
    perfect
  • Learn to welcome corrections and criticisms as
    helping you to perfect your work do not take
    them personally
  • Seek out and fix problems, dont avoid them
  • Be responsive to the realities of the situation

20
A little problem
A
4
M
9
  • I know each of the above cards has a letter on
    one side and a number on the other
  • My theory is if a card has a vowel on one side,
    it has an even number on the other
  • I want to test my theory, but...
  • I want to turn over as few cards as possible
  • Which cards must I turn over ?

21
Answer to the cards problem
  • Theory If vowel, then even
  • You have to look for things that show you are
    wrong, not things that show you are right!
  • This is part of what I mean by attitude

2
K
8
E
dontneed
need
dont need
need
22
Small projects
  • You can build a doghouse in a few hours
  • You dont need a blueprint
  • The materials dont cost much
  • A little knowledge of tools is enough
  • Imperfections are no big deal

23
Medium-sized projects
  • You can build a house in a year or so
  • You really do need blueprints
  • Excess materials mean wasted money
  • House building requires more skills plumbing,
    bricklaying, electrical work, carpentry, etc.
  • Imperfections matter you dont want a leaky
    roof!
  • Its easier if you arent doing it all by yourself

24
Large projects
  • You cannot build a skyscraper by yourself
  • Its just too much work for one person
  • You dont have the money
  • You dont have all the skills
  • Imperfections could be costly or even fatal
  • Skyscrapers can only be built by a team
  • Communication is essential
  • A paper trail is essential

25
What does that mean for CS?
  • What can we ask you to build in your classes?
  • What will be expected of you in industry?
  • We teach skyscraper-level skills, but
  • we ask you to apply those skills to doghouses
  • its silly, but what alternative do we have?
  • Its up to you When you leave here,
  • will you be able to build skyscrapers?
  • or will you just be very good at building
    doghouses?

26
Why am I here?
  • My personal goals are
  • For the students
  • get everybody through this program
  • with the skills and attitudes you need to succeed
  • give you a solid understanding of basic
    programming
  • try to lure you into learning more about the
    field
  • For the program
  • Produce really competent students that reflect
    well on Mercys Computer Science program

27
Academia vs. industry
  • In industry, the focus is on getting things done
  • Your manager doesnt want duplication of
    efforttwo or more programmers doing the same
    thing
  • If it helps get the job done, getting programs
    from somewhere elselegallyis fine
  • Here, the emphasis is on learning how to do
    things
  • We want duplication of effort
  • We want you to all be learning the same things
  • We want you to do all the work

28
The Rules
  • You may
  • discuss the assignments with one another
  • help others debug their work
  • use, without attribution, anything I post to the
    Web
  • You may not
  • work together on the same program
  • copy anothers code, or allow your code to be
    copied
  • lend your code to someone else, or leave it lying
    around where someone else may copy it
  • use any code from textbooks or the Web without my
    permission

29
Group assignments
  • The preceding rules apply to individual
    assignments
  • This semester, some of the assignments will be
    done in pairsyou and another student working on
    the same problem
  • The same rules apply, except that you and your
    partner will be treated as a single individual
  • You and your partner will work on the same code,
    and together will turn in a single program
  • You may not copy code from, or lend code to, any
    other pair
  • We will discuss pair programming in substantially
    more detail later in the course

30
How to get a good grade in here
  • Start your assignments early!
  • Programming takes a lot of time
  • Its not easy to predict how long a program will
    take
  • Test your programs thoroughly
  • One or two simple tests are not enough
  • We will do thorough testing, even if you dont!
  • Read the assignments carefully
  • Do what is assigned, not something like what is
    assigned
  • Learn to use your tools
  • Use comments and good style right from the
    beginning, not as a last-minute addition
  • To prepare for tests, review and understand the
    lectures

31
The End
  • He who works with his hands is a laborer.
  • He who works with his hands and his head is a
    craftsman.
  • He who works with his hands and his head and his
    heart is an artist.
  • -- St. Francis of Assisi
Write a Comment
User Comments (0)
About PowerShow.com