21-dec-15 welcome to the computer and information technology program matuszek

37
Jun 27, 2 022 Welcome to the Computer and Information Technology program http://www.cis.upenn.edu/~matuszek

Upload: joseph-spencer

Post on 18-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

Apr 21, 2023

Welcome to the Computer and Information Technology program

http://www.cis.upenn.edu/~matuszek

Page 2: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

2

MCIT Pizza

6:15 Thursday, Sept. 9

Levine 307

Page 3: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

3

Who am I?

David Matuszek (muh-TOOZ-ik) I prefer “Dave” or “Dr. Dave” I’m the director of the MCIT program I’m here to teach, not to do research My most important courses are CIT 591 and CIT 594

Page 4: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

4

Who are you?

Most of you are in the new MCIT program. You are here because: You are extremely bright You do not have a BA or BS in computer science

A few of you are in Bioinformatics The rest of you are in other programs You have a very wide range of backgrounds

Page 5: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

5

What is this course?

This is a beginning programming course The language we are using is Java 2

The primary audience is MCIT students This is one of six required MCIT courses

It is also a service course for other students who need to learn to program CIT 591 replaces CIS 500 in this role If I can lure you into computing, I will!

Page 6: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

6

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 Which of these is more important?

Money is a necessity Being rich isn’t a necessity (but it sure is nice)

You spend about 1/4 of your adult life working It’s important to find work that you enjoy

Page 7: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

7

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!

Page 8: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

8

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, there’s a good chance you will like programming Some puzzles are hard You need a tolerance for frustration Solving hard puzzles can be very satisfying

Page 9: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

9

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 Walk upright Recognize faces Talk, and understand someone else’s speech

Computer science is all about how to do things Programming is about how to make the computer do the things that we

ourselves know how to do Computer science is about figuring out how to do additional things

Page 10: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

10

CIT 591 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

Page 11: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

11

Beauty in computer science

Programs can be beautiful or ugly I am not speaking metaphorically

Usually, Blind people can’t appreciate fine paintings Deaf people can’t appreciate good music Non-mathematicians can’t appreciate elegant proofs Non-programmers can’t appreciate the beauty in programs

(but can often feel the lack of it!)

Page 12: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

12

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

Page 13: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

13

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

Page 14: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

14

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 it’s easy to

understand

Page 15: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

15

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

Page 16: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

16

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?

Page 17: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

17

Elegance, again

Suppose you are given a deck of 51 playing cards How do you decide which card is missing? Can you adapt Gauss’s 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?

Page 18: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

18

What CIT 591 and 594 are 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 CIT 591 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 CIT 594 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

Page 19: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

19

Out with the old, in with the new

Geometry is about 2300 years old It’s all based on straight lines and circles These were viewed as idealizations of nature There are no straight lines or circles in nature Didn’t anybody notice?

Benoit Mandelbrot developed fractal geometry starting in about 1977

Even in a 2300 year old subject, things change!

Page 20: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

20

Fractals are everywhere

Page 21: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

21

Changes in computer science

Computer science is only about 55 years old It’s changing much faster than geometry! Java was first introduced in 1995 We will be covering Java features that didn’t 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

Page 22: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

22

What’s 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!

Page 23: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

23

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 don’t 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

Page 24: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

24

But more importantly...

The attitude you need doesn’t 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, don’t avoid them Be responsive to the realities of the situation

Page 25: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

25

A little problem

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 ?

A 4 M 9

Page 26: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

26

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”

A 4 M 9

2 K 8 Eneed don’t

needdon’tneed

need

Page 27: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

27

Small projects

You can build a doghouse in a few hours You don’t need a blueprint The materials don’t cost much A little knowledge of tools is enough Imperfections are no big deal

Page 28: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

28

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 don’t want a leaky roof! It’s easier if you aren’t doing it all by yourself

Page 29: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

29

Large projects

You cannot build a skyscraper by yourself It’s just too much work for one person You don’t have the money You don’t 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

Page 30: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

30

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 it’s silly, but what alternative do we have?

It’s up to you: When you leave here, will you be able to build skyscrapers? or will you just be very good at building doghouses?

Page 31: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

31

Why am I here?

My personal goals are For the MCIT students:

get everybody through this program with the skills and attitudes you need to succeed into a career that you will enjoy

For the non-MCIT students: give you a solid understanding of basic programming try to lure you into learning more about the field

For the program: Produce really competent graduates that reflect well on the

MCIT program

Page 32: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

32

Academia vs. industry

In industry, the focus is on getting things done Your manager doesn’t want duplication of effort—two or

more programmers doing the same thing If it helps get the job done, getting programs from

somewhere else—legally—is 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

Page 33: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

33

Academic honesty

If you came through the American or English school systems, you presumably already know the rules

But...many of the rules are cultural For example, I’m told that in China there is little or no notion of

“intellectual property,” while in this country, intellectual property rights are extremely (absurdly?) strict

I don’t claim to know which kind of rules are “best” However, “When in Rome, do as the Romans do.” In other words, you must understand and follow the “American”

rules while here at Penn Be aware that the rules may vary somewhat from one instructor

to another

Page 34: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

34

Rules for individual assignments

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 another’s 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

Penalty for first offense: You will be reported to the Office of Student Conduct You will receive an F in the course

If you think you may have accidentally broken a rule, come and talk to me about it

Page 35: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

35

Group assignments The preceding rules apply to individual assignments This semester, most of the assignments will be done in pairs—

you 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 You may get help from anyone, so long as they don’t actually write any

code for you We will discuss pair programming in substantially more detail later in

the course

Page 36: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

36

How to get a good grade in here Start your assignments early!

This is the first and most important way to improve your grades Programming takes a lot of time It’s not easy to predict how long a program will take

Test your programs thoroughly One or two simple tests are not enough We often provide simple but incomplete tests, just to get you started We will do thorough testing, even if you don’t!

Read the assignments carefully Do what is assigned, not “something like” what is assigned

Learn to use your tools (BlueJ, JUnit, etc.) Use comments and good style right from the beginning, not as a last-

minute addition To prepare for tests, review and understand the lectures

Page 37: 21-Dec-15 Welcome to the Computer and Information Technology program matuszek

37

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