Video Trailer for Computer Science 2000
[Home]
Introduction to Information Systems, Fall 2025
Video Trailer in Canvas Media Library.
MW 2:30 - 3:50pm, RTBA.
- Stephen Slade
- 113 AKW, 432-1246 stephen.slade@yale.edu
- Office hours over zoom: Wednesday, 4-6 pm, and by appointment.
- Zoom meeting id: 459 434 2854.
What am I like?
I started at Yale over 50 years ago. I went away from time to time to do other things.
For the past ten years, I have been teaching in the Computer Science Department.
Biography. Hybrid: academia (theory) / industry (practice).
- Yale undergraduate. music major. (studied Computer Science with Alan Perlis)
- Developed computer systems for presidential campaigns and the White House,
introducing electronic mail to campaigns and the internet to the White House.
(stephen.slade@whitehouse.gov)
- Yale graduate student, M.S., Ph.D., computer science (artificial intelligence)
- Yale Computer Science Department: Assistant Chairman, Assistant Director
of the Yale AI Project, Lecturer.
- Connected Yale to the Internet.
- NYU Stern School of Business, Department of Information Systems, Assistant
Professor.
- Wrote three books (T/Scheme, LISP, decision making) - dedicated
to Yale alumnae.
- Developed investment and risk technology systems for Wall Street.
Sell side (Morgan Stanley), Buy side (INVESCO, Bank of America, Commonfund)
One thing you should know is that I tend to use the web a lot to
organize the class materials. This web page is a good example.
What makes this course great?
First, this course satisfies the prerequisite for the Certificate in Programming,
as well as the data structures course, Computer Science 2230. In the past, you could
take a placement exam to get into CS 2230. As of this term, you must
satisfy the hard prerequisite of either CS 2010 or CS 2000, this course.
There is a standard scheme for giving a talk.
- Tell the audience what you plan to tell them.
- Tell them.
- Tell them what you told them.
We will start with step 1.
Many students come to Yale thinking that programming and computer science
are the same thing. This course is aimed to disabuse you of that notion.
For years,
academic computer scientists have debated the role of programming in
introductory computer science courses. Many have argued that an
introductory science course should expose the student to the great
ideas of the discipline. Thus, an introductory biology course should
cover topics such as evolution and molecular genetics, but not how to
build a microscope. Accordingly, a computer science course should
emphasize the major intellectual issues of computing, not how to write
programs.
We do not agree with this position. First, programming is a major
intellectual issue in computer science. Second, the comparison of
programming to building a microscope misses the point. Writing
programs in computer science is more like building a living organism
in biology. If biology had advanced to a stage that permitted
introductory students easily to construct amoebas and clams and roses
and rabbits, there would be little debate over the intellectual
content of such exercises. (Slade, The T Programming Language, 1987)
Here is the our framework.
- Progamming and recursion. Learning Python allows us to have a grounded conversation.
- Binary encoding. Everything inside a computer is a string of bits, that is, 0's and 1's. We
will see how to encode numbers, text, images, sounds, and video -- all as binary numbers.
- Advanced programming. We will examine Python techniques for accessing files,
and web pages, as well as meta-programming techniques, like decorators, exceptions, iterators,
and generators.
- Object oriented programming. Computer science is the science of abstraction. OOP is
a fundamental method for achieving abstraction.
- Data structures. Python comes with a few basic data types, like strings, lists, and
dictionaries. Using OOP, we will create abstractions for higher level data structures.
- Computer Architecture. How do we implement a programming language? We will specifically see how Python itself is implemented.
- Data bases. Data bases are the heart of most computer applications, including web programming. We will introduce SQL (Structured Query Language) and its Python API (application programming interface.)
- UNIX. The most influential computer program in history is the UNIX operating system.
It has been around for over 50 years and is at the heart of both the Internet and the Mac computer. You will achieve UNIX fluency.
- Cryptography. The essence of information security is CIA. No, not that one. It is
Confidentiality, Integrity, and Availability - the security triad. We will see how computer codes work.
- Other topics. Along the way, we will encounter issues in artificial intelligence,
machine learning, and computational complexity.
For most of the course, we will execute step 2. On December 3rd, I will execute step 3.
What happens in class?
In most classes, I will lecture about the above topics and related programming assignments.
The lecture notes will be available online, and well as video recordings of the lectures.
To assess class participation, there will be in-class quizzes. Students get full
credit for class participation by completing 50% of the quizzes.
In most classes, I will also demonstrate code online - both Python code and UNIX
commands. Transcripts of these online sessions will be available outside of class
on the course website.
What are the assessments and feedback like?
There will be regular homework assignments, primarily Python programs.
Students will submit their code using gradescope, which has an autograder to
provide instant feedback. The assignments also include unit tests
to facilitate development and debugging.
There will be two midterm exams and one final exam. Again, the grading will be
through gradescope, and you will have the opportunity to request regrades for questions
that you feel were not assessed accurately.
What will I do?
There is some reading, but not much. We expect you to know Python for
the problem sets and exams, and UNIX for the exams.
Most of your time in this course will be outside of the classroom.
Your resources include the course web site, lecture notes, transcripts,
lecture recordings, ULA office hours, Ed Discussions, and email access to the staff.
I also encourage students to use Clarity and related AI bots to generate
practice problems and questions.
A digression: The Trolley Problem
In the world of driver-less cars, people discuss the
trolley problem
Should you pull the lever to divert the runaway trolley onto the side track?
This problem originated in the 1960's in the context of abortion and
other dilemmas. Today it often crops up in discussions about
autonomous vehicles, as in, what decision should the driver-less car
make in a similar circumstance?
Some people conclude that we should not have driver-less cars until we
solve the trolley problem.
By that argument, we should not allow people to drive either.
My solution to the trolley problem for autonomous cars is the same as
for human drivers: obey the traffic laws.
Nonetheless, there has been a lot research into the cultural and
developmental differences involving the trolley problem. Here is
one example: 2 year old Nicholas and
the trolley problem A few years later, his sister Nora was given the same problem.
I think the trolley problem misses the boat. I propose the following
as a more meaningful test for a driverless car.
A driverless car will be able to run errands for you. For example, it
could pick up your dry cleaning or groceries. It could pick up your children
at school.
Let's say that Otto (your driverless car) is supposed to pick up your teenage
son at soccer practice. When Otto arrives, your son says that he injured his
leg and needs to go to the hospital. Otto should comply with this change of
plan.
Instead, suppose that Otto arrives at soccer practice, and your son says
that he needs to go to the liquor store. What should Otto do?
There might be a legimate reason for your minor child to go to a liquor store, but Otto should not automatically comply. What should a human driver
do?
We will see that for many of these decision problems, there is no one
right answer.
However, they help us to refine our cognitive model for automated decision making.
Update: I came across the following last year (1/16/2024)
I am always looking for opportunities to get students to question their assumptions.
If you have questions, feel free to write to me: stephen.slade@yale.edu.