Welcome to the Computer and Information Technology program 26-Jul-16

advertisement
Welcome to the Computer and
Information Technology program
http://www.cis.upenn.edu/~matuszek/cit591-2008.html
26-Jul-16
Registering

If you are not registered, this class is full



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


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
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
2
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)
3
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
4
What is this course?

This is a beginning programming course


The primary audience is MCIT students



The language we are using is Java 6
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 nonMCIT students
We are starting a new course, CIT 590, to be held Spring
semesters, specifically for non-MCIT students
5
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!
6
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
7
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
8
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
9
Beauty in programming

Programs can be beautiful or ugly


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:


I am not speaking metaphorically
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
10
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
11
What CIT 591 and 594 are about

You need to learn the craft of programming




In CIT 591 we study 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
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
12
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
13
Versions of Java
Oak: Designed for embedded devices
Java: Original, not very good version (but
it had applets)
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
Java 2
Java 1.4: More additions and the assert statement
Java 1.5: Generics, enums, new for loop,
Java 5.0
and other new syntax
Java 6: A few new features, mostly at the advanced level
14
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!
15
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
16
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
17
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
18
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
19
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
20
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?
21
Java is a terrible language

...That is, Java is a terrible first language




This means:



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
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!
22
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


However, “possible”  “practical”


Hence, Java = C++ = C# = Basic = Pascal = C = Python =...
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
23
Why am I here?

My personal goals are

For the MCIT students:




For the non-MCIT students:



get everybody through this program
with the skills and attitudes you need to succeed
into a career that you will enjoy
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
24
How to get a good grade in here

Start your assignments early!




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


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
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
25
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
26
Download