Elements of Computers and Programming
Chapman: I didn't expect a kind of
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
- 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
- Married with two children, two dogs and a cat
- 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
- Hardware and Software are Everywhere
- GPS (global positioning system)
- 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
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
- Denver airport -
- airport opening delayed years due to failure of
- 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
- One example: efforts to identify point mutations in a
variety of genes in cancer
And of course, there is much, much more!
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
- 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
- Ask questions in class, discussion section and on the
- Talk through examples and exercises outloud
- Talking uses a different part of your brain
- If you want to understand something better - say it
- 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.
- problem-solving and creating algorithms
- implementing those algorithms in computer
- solve interesting and hard problems
- communicating precisely - the computer does
exactly what you tell it!
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
- 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
- policies for the course
- online with links to more information
- Python Programming: An
Introduction to Computer Science by Zelle (1st edition - NOT 2nd)
- most readings on the schedule page are from the
and Discussion Group
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
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
section on Fridays
- smaller group meeting with TA or proctor
- Q&A on programming projects
- Quizzes common in discussion
- More programming exercises/practice
- 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
- Check the discussion board and email daily
and Practice Exercises
- 80% of your learning comes from doing the
- 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
- Must get CS account to do projects - see class
webpage and first project description for details.
- 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
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