Elements of Computers and Programming
CS 313e



Dr. Mary V. Eberlein
Department of Computer Sciences
The University of Texas at Austin


















Who Am I?

    • Undergrad: math major at Univ of South Alabama
    • Math grad school: MS, Univ of Illinois, Champaign-Urbana
    • CS grad school: PhD, University of Tennessee

  • Family
    • Married Scott in 1997
    • Two children (pictures)
      • Nathan, 1999
      • Lily, 2002


  • 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
    • 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