- Professional
- Taught at Tennessee Technological University for 1
year after graduation from the other UT
- Worked at small software engineering company in
Knoxville for 3 years:
- Incorporated software engineering techniques
- Improved algorithms used in software
- Developed software in C++, Java
- Taught courses for clients
- Lecturer at UT-Austin for 8 years
Who
are You?
- Why are you here?
- What are your goals for the course?
- What is your background in programming/computer science?
Why
Computer Science?
- Hardware and Software are Everywhere
- GPS (global positioning system)
- IPod
- cell phone
- Thought-provoking info about the lithium-ion
batteries in cell phones, IPods, laptops, etc.
- medical devices
- air-traffic control systems
- educational games
- palm pilot
- online purchasing at ebay, amazon, etc
- NASA rocket control
- national security (NSA - encryption and decryption...)
- US military submarine sonar systems
- Consequences - human and
monetary losses - for poor quality software
- Explosion
of the Ariane 5 unmanned rocket (1996)
- AT&T long distance
service fails for 9 hours (1990)
- wrong break statement in C code
- Computerized radiation
therapy machine, Therac-25
- Between 1985 and 1987, cancer patients were exposed
to massive doses of radiation by the Therac-25, resulting in death and
serious injury
- Denver airport -
computerized
baggage handling
- airport opening delayed years due to failure of
baggage system
- Other software horror stories
Some Fun and Interesting CS Stuff
- Cryptography - protecting the privacy of information
- Secure Computing
- Anti-phishing software
- phishing: attempt to fradulently obtain personal
information (credit card number, password, etc) via electronic
communication (email, IM) by pretending to be someone trustworthy
- More info at wikipedia
- Firewalls - piece of software or hardware which
prevents certain forbidden types of communication in a networked
environment (eg attempt to deny unauthorized access, exploitation of a
computer or computer network).
- Secure Sockets Layer (SSL) and Transport
Layer
Security (TLS) <--- successor of SSL
- cryptographic protocols which provide secure
communication on the internet
- Computational Biology/Bioinformatics
- use of
mathematical and computer science techniques to solve biological
problems
- One example: efforts to identify point mutations in a
variety of genes in cancer
And of course, there is much, much more!
How
to Succeed in CS 313e
"I would like to offer some advice about how you can best learn [this
subject]. You will learn the most by actively working exercises. I
suggest that you solve as many
as you possibly can. After working the exercises your instructor has
assigned, I encourage you to solve additional exercises..."
-- Kenneth H. Rosen, in foreword of his textbook Discrete Mathematics and Its
Applications
- Do the exercises, rework the examples and take your own
notes
- You cannot learn to program by just listening in
class and reading the text!
- Don't just look at the exercises - do them.
- Remember: there are no dumb questions
- If you are wondering about something, do your
classmates a favor and ask - many of them are wondering about the same
thing.
- Ask questions in class, discussion section and on the
discussion board
- Talk through examples and exercises outloud
- Talking uses a different part of your brain
- If you want to understand something better - say it
outloud
- Run the code examples yourself
- Experiment. Change Things. Break the Code!
- Come to Class. Pay Attention. Partcipate.
- Study regularly - most will need to invest at least
6 hours a week outside of class.
- Write lots of code! (Did I mention this already?). You
learn by doing.
- Get to know your classmates. Talk to them about the
course material and study with them.
- Come to office hours. The TAs, proctors and I will all
hold our office hours in the elements lab, PAI 5.38 (though you may
sometimes have to look for me in PAI 5.44).
CS
313e
- Useful Skills
- problem-solving
- communicating precisely - the computer does exactly
what you tell it!
- learning more advanced programming skills in Java