14-jul-15 welcome to the computer and information technology program matuszek/cit591-2008.html

26
Jun 23, 2 022 Welcome to the Computer and Information Technology program http://www.cis.upenn.edu/~matuszek/cit591-2008.html

Post on 22-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

Apr 19, 2023

Welcome to the Computer and Information Technology program

http://www.cis.upenn.edu/~matuszek/cit591-2008.html

Page 2: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

2

Registering

If you are not registered, this class is full There’s plenty of room in this lecture hall, but not in the lab If and only if you are in MCIT, you can register

I will teach a new course, CIT590, in the Spring I will allow that class to be as large as necessary

Once you are registered, CETS will create an account for you that you can use in Moore 207 This may take an extra day

Before you come to lab on Friday, go to Moore 207 and make sure you can log in there If you can’t, contact CETS immediately

Page 3: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

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 I teach:

CIT 591, Introductory programming for MCIT (Fall) CIT 590, Introductory programming for non-MCIT (Spring) CIT 594, Data structures and algorithms (Spring) CIT 597, Programming for the Web (Fall) CIT 700, Emerging Technologies (Summer II)

Page 4: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

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

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

Page 5: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

5

What is this course?

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

The primary audience is MCIT students This is one of six required MCIT courses The sequel to this course, CIT594, also uses Java

CIT591 is also a service course for other students who need to learn to program However, there is only a limited amount of room for non-

MCIT students We are starting a new course, CIT 590, to be held Spring

semesters, specifically for non-MCIT students

Page 6: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

6

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 7: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

7

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 8: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

8

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 9: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

9

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 10: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

10

Beauty in programming Programs can be beautiful or ugly

I am not speaking metaphorically 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

Non-programmers can recognize a program's outer beauty (Good) programmers can recognize its inner beauty

Page 11: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

11

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 12: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

12

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) 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 13: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

13

Changes in computer science

Computer science is only about 60 years old The technology changes fast Java was first introduced in 1995 We will be covering the sixth major version of Java

Change is rapid and accelerating Dominant language of the 1990s: C++ Dominant language of early 2000s: Java Dominant company: IBM to Microsoft (to Google?) First GUI: Macintosh, 1984 First web browser: Mosaic, 1992 Web pages: HTML to DHTML to XML

Page 14: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

14

Versions of Java

Java 1

Java 2

Java 5.0

Oak: Designed for embedded devices

Java 1.1: Adds inner classes and a completely new event-handling model

Java 1.2: Includes “Swing” but no new syntax

Java 1.3: Additional methods and packages, but no new syntax

Java 1.4: More additions and the assert statement

Java 1.5: Generics, enums, new for loop, and other new syntax

Java: Original, not very good version (but it had applets)

Java 6: A few new features, mostly at the advanced level

Page 15: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

15

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, the DMCA, Amazon, Google, etc.

There is only one safe prediction: You will be taken by surprise!

Page 16: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

16

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 17: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

17

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 18: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

18

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 19: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

19

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 20: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

20

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 21: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

21

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 22: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

22

Java is a terrible language

...That is, Java is a terrible first language Your first programming language should be simple, so that

you can concentrate on learning the concepts Java is designed primarily for power, and only secondarily

for simplicity Java is relatively elegant, for the amount of power it has

This means: Java is more difficult to learn than many other languages In exchange, Java is a workhorse language that you can use

in the so-called “real world” But this does not mean Java is the only language you

will ever need!

Page 23: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

23

Comparison with other languages

Java is comparable in complexity to C++ and C# Java is more complex than Basic or Pascal It is mathematically provable that anything you can compute in

one programming language, you can compute in (almost) any other programming language

Hence, Java = C++ = C# = Basic = Pascal = C = Python =...

However, “possible” “practical” In practical terms, you can do a lot more in Java than in Basic

Java is a powerful general-purpose language In the future you are likely to use many special-purpose languages that are

better for certain tasks than Java or its competitors

Page 24: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

24

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 25: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

25

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 (Eclipse, 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 26: 14-Jul-15 Welcome to the Computer and Information Technology program matuszek/cit591-2008.html

26

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