Computer scientists work in just about every field and type
of organization. The one thing in common is the existence of problems
and the efficient use of computers to solve them.
Why are you teaching Linux?
Total cost of ownership, reliable networked systems,
+ hard core professionals use it.
Why are you teaching C++?
Used in many industries. After C++ other languages are easy!
It is also leads to programs that execute quickly.
It is like a tool box full of very sharp power tools.
You need to know what you are doing but you get a lot
of power and speed in return. C++ is very much the parent of
most modern (web-based) languages.
How is C++ used in Games?
You need a good graphics and user interface library
plus a "games engine" that understands the physics of objects.
C++ acts as the glue connecting these components. The
components are probably also written in C and/or C++.
How do you develop a program?
Very carefully!
This quarter we will look at two approaches to developing
program. The first is good for small scale projects -- one person
solving one proplem. The other is for large projects -- many
people with a changing set of problems.
The first method is the
structured method
and it is good for solving simple problems that don't change.
First: understand the problem. Second: work out what the user
will input and the program will output. Third: work out
an
algorithm
that converts the user's input into the programs output.
If possible discuss your algorithm with somebody.
Fourth: translate the algorithm into computer code
Fifth: test the program and remove the bugs.
Sixth: make the fixed program easier to understand.
Seventh: User testing...
The second method is the
object-oriented method
and it fits the more typical situation of a team of programmers
tackling a family of changing problems.
First: understand the situation -- problems and previous
solutions. Second: work out how the
user will use the software. Third: sort out the data needed.
Fourth: design objects to store the data and do useful things.
Fifth: Plan the interactions between the objects.
Sixth: write code for the objects, user, data, ....
Seventh: Things change -- so go back to the first step.
There is much to say here. See
[ projects.html ]
and the productivity and quality tips in our text.
Why are you teaching UML?
A picture is worth a thousand words. But to be useful in developing
software the picture must be a precise diagram that other people use
and understand. The UML
is the only industrial diagramming language for software.
How does a student survive CSCI201?
- syllabus
[ syllabus.html ]
- Teacher
- Book
- Rules
- Organization
- Schedule
[ schedule.html ]
- Lab work
[ labs.html ]
- Assigned work
[ schedule.html ]
- Class work
[ schedule.html ]
- Rules
[ ../syllabus.html ]
How do I learn more UNIX?
The CS Club may
conduct a workshop TBA.
What do I need to do to prepare for this class?
Have you written a program? Do you want to do it again?
Should I buy some software or hardware?
No.
Can I work at home?
Yes.... but it is harder than using our labs.
Is there any tutoring for this class?
The department doesn't run any special sessions but we
usually have some students ready to help at the
learning center on campus.
How has computer programming changed through out the years?
Here is my quick and personal list.
- 1800s Ada Lovelace programs Babbage's Analytical Engine.
<1940s Programs were written for human computers to execute in English and
mathematics.
- 1940s Programs written by changing the machine hardware (in secret).
- 1950s Instructions written as numbers and stored in memory.
- 1960s First programming languages mimic mathematical formula(FORTRAN, ALGOL)
or managerial english(COBOL). Programs became complicated so we split
them up into independent pieces called modules. Flowcharts used to design
programs. Many local low level languages. Mainframes.
- 1970s Structured programming. Programs are designed using pseudocode
and diagrams and split into functions. Pascal. C and Unix. Minicomputers.
- 1980s Data Abstraction. We started to group functions arround data and
let other parts of the program only see those functions. Ada. The IBM PC.
The Apple ][ and Mac.
- 1990s Objects. C++. Java. The Web.
- 2000s Modeling: diagrams of objects etc used to analyse problems
and design solutions. Scripting: Perl, Ruby, C#, Python,...
Next -- Lab 01 and Class 02
[ lab01/ ]
[ 02.html ]
. . . . . . . . . ( end of section Class 1 of CSCI201 Computer Science I) <<Contents | End>>
Abreviations