Elements of Computers and Programming
Course Introduction

Chapman: I didn't expect a kind of Spanish Inquisition.

Ximinez: NOBODY expects the Spanish Inquisition! Our chief weapon is surprise... surprise and fear... fear and surprise... Our two weapons are fear and surprise... and ruthless efficiency... Our *three* weapons are fear, surprise, and ruthless efficiency... and an almost fanatical devotion to the Pope... Our *four* ... no... *Amongst* our weapons... Amongst our weaponry... are such elements as fear, surprise... 

Who Am I?

Instructor: Dr. Mary Eberlein
  • Lecturer in CS department since 2000
  • Undergrad: math major, cs minor
  • Grad: M.S. in mathematics, University of Illinois; Ph.D. in computer science, University of Tennessee
  • taught at Tennessee Tech for 1 year
  • 2 1/2 years working for small software engineering firm: software development in C++, Java; improved algorithms used in company software; taught week-long software engineering classes to clients
  • Married with two children, two dogs and a cat

Plan for Today

  • Discuss course content and procedures
  • What will we do in this course?
    • Learn how to solve problems and implement the solutions as computer programs in the Python programming language
    • The goal is not so much about learning a specific language, but how to solve problems
    • You won't always use Python in other courses
    • Learning one language gives you the skills to learn another programming language

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 303e

"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. Note: Office hours locations will change in early February, when the CS department moves to our new building.

CS 303e

  • Computation
    • problem-solving and creating algorithms
    • implementing those algorithms in computer programs
    • solve interesting and hard problems
    • communicating precisely - the computer does exactly what you tell it!

Course Materials

This information is important!
 If you are new to college-level classes, you may be surprised by how much of the responsibility for knowing what to do in a class is up to you.

  • Class website
    • http://www.cs.utexas.edu/~eberlein/cs303e/
    • most materials you need are on the website
    • links to assignments, schedule, discussion section problems, programming projects and due dates, syllabus, contact information for me, TAs, and proctors
  • Class schedule
    • on the website
    • schedule of topics and reading assignments
    • links to notes I use in class
      • posted a day or two in advance
      • slides are a starting point only - we will diverge from them in class
  • Syllabus
    • policies for the course
    • online with links to more information
  • Book
    • Python Programming: An Introduction to Computer Science by Zelle (1st edition - NOT 2nd)
    • required
    • most readings on the schedule page are from the textbook

Class Time and Discussion Group

  • Lecture with instructor MW
    • discussion of topics covered in online notes
    • Q&A - I will ask you questions, and encourage you to ask questions of me as well
    • no open laptops or cell phones in class
    • arrive on time and don't leave early
    • minimize distractions to others: no texting, silence your cell phone
  • Discussion section on Fridays
    • smaller group meeting with TA or proctor
    • Q&A on programming projects
    • Quizzes common in discussion
    • More programming exercises/practice
  • Class Discussion Board
    • Piazza
    • Post questions about class, assignments, programming concepts here - anything of general interest
    • Do not post solutions for assignments or questions about your grades
    • I will post updates and class information on the discussion board
    • Check the discussion board and email daily

Assignments and Practice Exercises

  • Programming Projects
    • 80% of your learning comes from doing the projects
    • posted on class webpage
    • general guidelines on assignments page
    • Many assignments must be done alone; some may be done with a partner
    • usually graded out of 20 points
      • Programs that do not compile receive 0 points
      • Wrong file name for a project: 4 point deduction
    • Must get CS account to do projects - see class webpage and first project description for details.
      • Apply ASAP
    • slip days for projects, total of 4 for semester
    • programming assignments graded by TA and proctor
    • scores posted on blackboard
    • for individual assignments: sharing solution code is cheating -> F in the class
    • solution similarity monitored with plagiarism detection software
  • Exercises and Discussion Assignments
    • prepare you for quizzes and exams
    • discussion assignments are due at the beginning of discussion meeting, and will sometimes be collected and graded in lieu of an in-class quiz