CS 1315 Oxford 2013 Syllabus
CS1315 Oxford 2013 Syllabus
Essential Information
Course Objectives
Welcome to CS 1315. This is an introduction to computer science through media computation. By the end of the course, you will know a widely used, industrial strength programming language (Python) and will have used it to explore algorithmic thinking. You should be able to work with IT professionals and talk their language, learn new programming languages on your own, and show with pride a visually compelling portfolio of programs you probably don’t think you’re capable of writing. In addition, you will have gained deep insights into what we really mean by “computing” and “knowing the answer” to questions..
The official learning objectives for the course for our professional accreditation requirements are as follows. Consider them as a contract, but check out the topics and schedule to get a more concrete picture of what the course really involves.
- Write programs for mathematically based calculations (including user-interactive input), image and sound manipulation, and text (e.g., HTML) creation / manipulation.
- Apply the basic concepts of computer science, especially data representations, algorithms, encodings, forms of programming, to media-related problems, such as digital images, sounds, animations and Internet-based hypermedia.
- Apply a range of useful computing skills, including installation of computing tools, managing of constraints in spreadsheets, construction of web pages, querying of databases.
- Students are not expected to have had prior computing experience!
Contact Information
Prof. Colin Potts ()
Course Textbook
Official, required textbook: Guzdial, M and B. Ericsson, Introduction to Computing and Programming in Python: A Multimedia Approach (3rd Edition), Pearson Prentice Hall, 2013. ISBN-13:978-0-13-292351-4, ISBN-10: 0-13-292351-3.
Recommended (free) online resource: Elkner, J., A.B. Downey and C. Myers, How To Think Like a Computer Scientist: Learning with Python (2nd Edition, Including Python 2.x) available in T-Square resources
Software
JES (Jython Environment for Students) v4.2.1 (at )
CS 1315: Topics and Schedule
The exact schedule of topics class by class will be flexible to account for class discussion and issues arising in homework assignments and tests. The overall schedule is as follows:
Week 1: Introduction to computer science and Python programming
Topics:
1.1 Welcome. JES. Simple programming demonstration.
1.2 Control structures: For loops and if/elif/else
1.3 Data structures: Text strings and lists
1.4 Fruitful & Non-fruitful functions. Program hierarchy.
Questions to ask yourself:
What is computer science, and how is it relevant to my interests?
Can I describe how to do something well enough that somebody else could do it without error?
What are these error messages telling me?
Things to remember:
- Loops allow you to do the same thing many times.
- Selections allow you do something conditionally.
- Functions are the building blocks of big programs.
- Programs always do what you tell them to - but not perhaps what you want.
- Computing is about process (functions) and structure (data).
HW1 Turtle graphics. Union jack.
Write a program using turtle graphics that uses only turtle functions and draws a union jack (the UK national flag).
Week 2: Media computation with pictures
Topics:
2.1 Introduction to pictures. Color coding. HW1 help.
2.2 Simple picture transformations. Lossless & lossy functions.
2.3 Simulating white balance adjustments.
2.4 Posterizing and other simple special effects.
Questions to ask yourself:
- What is digitization? (Of pictures, colors, sounds, etc.)
- How do programs like Photoshop work?
Things to remember:
- A pixel is not a picture.
- There are three color channels per pixel and 255 values for each.
- A picture manipulation is just lots of pixel manipulations.
- Learn the powers of two: they come up a lot.
HW2 Simple picture manipulation.
Take one of your pictures from this summer (scaled to within 640x640 pixels max.) and write a Python function that manipulates the picture to give some special effect or combination of effects. The function can be stand-alone or it could call other functions that you also write. Submit the original picture and your function.
Week 3: Image processing
Topics:
3.1 Collages. Layering pictures. Blending, etc. HW2 help.
3.2 Blur and edge detection.
3.3 Midterm exam.
3.4 Chromakey and selective image changes.
Questions to ask yourself:
- When scaling up and down, what pixels do I ignore/repeat (and how)?
- Blurring involves some "averaging" of pixels... how?
- What's the difference between a painting and a pencil sketch?
- How do foregrounds get superimposed over a background for special effects?
Things to remember:
- These are not just pixel-by-pixel changes. Think "corresponding pixels".
- Usually a pixel change depends on other pixels. Think "for/if"
- Offsets involve simple coordinate arithmetic. Don't get fazed.
- But watch out for off-by-one errors at the edge of the picture.
HW3 Flag collage.
Take several of your pictures from this summer or obtain some country- themed pictures from the web. Scale them so that the final collage is within a 800x600 rectangle max. Write a program that generates a collage of the three pictures that resembles the national flag of that country. (Hint: It's best to use flags with a tricolor design than something too elaborate!)
Week 4: The Internet
Topics:
4.1 File I/O. Scraping the web for content. HW3 help.
4.2 Writing HTML. Dates and time. Simple output meta-programs.
4.3 Document layout. Javascript and CSS.
4.4 Internet & web architecture.
Questions to ask yourself:
- What goes on when I click on a link in a web page? Where do I "go"?
- What is "in" a web page? How does it get laid out?
- How do web pages change quickly and get customized? (Not by human hands.)
Things to remember:
- DNS translates a URL into an IP address.
- Web traffic is all in "packets". Most travels from servers to clients.
- HTML is *marked up* text. The mark-up is indicated by <TAGS>.
- HTML is for structure; CSS for appearance; Javascript for behavior.
- A meta-program writes or reads another program or script as text.
- When your page looks wrong, look at the HTML first and then the Python.
HW4 Make a web-page photo album.
Write a program that takes twelve pictures of yours from this summer and creates a web page in which the pictures are laid out in a 4x3 tabular grid with captions underneath each picture. The pictures should all be in a single folder and should be the only .jpg files in that folder. The captions should be in text files and should be the only files in that folder with .txt extensions. Your program will read in the text and generate the caption and will use the names of the jpg files to generate the appropriate HTML.
Week 5: Text processing and dictionaries
5.1 I/O meta-programs. Scraping and extracting. HW4 help.
5.2 Text search and manipulation.
5.3 Python dictionaries. Randomization.
5.4 The Turing Test, the Chinese Room and AI.
Questions to ask yourself:
- How does a browser or client work? Could I write a web client? (A: Yes.)
- How do we look things up in a dictionary?
- How can I do text changes (e.g. translation?) systematically?
- What does it take to talk intelligently? Can computers do it? Ever?
- Once you've encountered the Turing Test, what do you think of it?
Things to remember:
- A web client just treats HTML as text and searches for & processes tags.
- Most of the web is just text structured in machine-readable ways.
- Eliza was only a demo, but it raises important philosophical issues.
- Alan Turing was the man.
Project: Eliza dialog program.
Write a program that engages in a dialog with the user. You don't need to pass the Turing Test with this, but try to capture some of the richness of human language and the subject matter of the dialog. Use randomization where appropriate to keep the dialog fresh. Some ideas:
- The original Eliza program, in which the program is a therapist.
- A tour guide for Worcester College.
- A British-to-American English translator.
- Customer service representative for an ISP.
- Something like the Monty Python argument sketch.
- British football hooligan.
- ...
(If you have other ideas - e.g. something literary, like a surreal poet that doesn't engage in dialog but generates random text chunks, ask first but that's probably fine.)
Week 6 Object-oriented design and AI
Topics:
6.1 Object-oriented programming. Programs as models. HW5 help.
6.2 Duration and speed. Twenty-questions.
6.3 Optimization and the traveling sales representative. [Wembley?]
6.4 Wrap-up. Homework showcase. Final review
Questions to ask yourself:
- What is a model? (As in a model of the world)
- What does it really mean to answer a question or solve a problem?
- Are there some problems that can't ever be solved? For sure?
Things to remember:
- Programs are really models that do useful work. OOP makes this explicit.
- Classes are categories; objects are their instances. (E.g.: dog/"Fido")
- Objects have properties and a repertoire of behaviors.
- Yes, some problems can't be solved; others take would take too long.
- So, often, computation = approximation and algorithms = rules of thumb.
CS 1315 Policies
Grading Policy
The grading breakdown is as follows (note, this is subject to change, but changes will be announced on T-Square and any changes made once grades have been assigned will be to your advantage):
-40%Theory
- 10% (Five very short quizzes)
- 10% (Midterm exam)
- 20% (Final exam)
-45%Practice
- 30% (Top three of four programming assignments, but all must be attempted)
- 15% (Project)
-15%Participation
- 10% (Pass/Fail grades on short homework assignments)
- 5% (Attendance and class CIOS participation bonus)
Letter grade assignments are given according to the following:
-A >= 90.00
-B >= 80.00 and < 90.00
-C >= 70.00 and < 80.00
-D >= 60.00 and < 70.00
-F < 60.00
In grading assignments and tests and in converting scores to letter grades we do NOT apply a curve. Curving means that you are competing for a grade. In this course your grade depends wholly on your own performance and is not affected by the rest of the class. Do not expect grades to be rounded.
Collaboration Policy
Collaboration with other students in this class is an important learning method. The following guidelines will help you understand the difference between collaboration and plagiarism.
- Students may only collaborate with fellow students currently taking CS 1315 and the professor. Collaboration with anybody who is not registered in CS 1315 is strictly prohibited and counts as academic dishonesty.
- Collaboration means talking through problems, assisting with debugging, explaining a concept, etc. You should not exchange program code or write code for others.
- For homework and lab assignments, each student must turn in a unique program unless explicitly indicated as a pair-programming or team assignment.
- Your submission must not be substantially similar to another student's submission. Collaboration at a reasonable level does not result in substantially similar code.
- For all assignments, you must write comments at the top of each
file you turn in detailing the following information: - Your name
- GT email address
- Collaboration statement - the wording of the collaboration statement should be:
- "I worked on the homework assignment alone, using only this semester's course materials." OR
- "I worked on this homework with [give the names of the people you worked with] and referred to [cite any texts, web sites, or other materials not provided as this semester's course materials for CS 1315."
(How to comment Python code is something we will discuss in the first week of class.)
Academic Honor Code
Read, understand, and follow the Georgia Tech Academic Honor Code:
Due Dates, Late Work, and Missed Work
Homework and lab turn-in is typically via T-Square. You must turn in the assignment before the time stated that it is due. There will be a 6-hour grace period. After than time, T-Square will not accept your submission and you will receive no credit for the assignment in question. It is your responsibility to make sure you properly and completely submit the proper files for your assignments turned in to T-Square. (Please note that T-Square uses EDT times, not BST. There is a five-hour time difference, so an assignment posted as due at 7pm EDT is not due until midnight in Oxford.)
T-Square sends an automated e-mail message when you have successfully submitted an assignment, and it is your responsibility to check that you have received this message. If you do not receive it, you did not complete the submission process and your assignment has not been submitted.
In general, it is possible to submit an assignment more than once before a deadline. You are strongly encouraged to use this feature of T-Square whenever you can by submitting an early but incomplete version of an assignment for which you may receive partial credit. As you approach the deadline for an assignment you can then submit later (and, I hope, more complete and correct) versions of your work. The latest version supersedes anything you submit earlier, and only the latest submission will be graded. Note, if your submission has multiple files, you must upload all of the files each time you resubmit.
Another important note to remember…any code you submit must load and run in order to receive credit! It is your responsibility to load, run and test your code.
Exam Policy and In-class Assignments
Makeup exams will only be considered under special circumstances, such as illness.
No exam grade will be dropped.
Course Expectations
1. Lecture attendance is required. One unexcused absence is permitted. Further absences will incur a 2% class grade reduction (first instance) and 5% reduction (each subsequent instance.)
2. Keep up with the reading.
3. Try the code that we discuss in class and you read in the book. Alter it and try to predict what will happen. Break it in constructive ways and then try to fix it. Computing is not like biochemistry: if you break a program, you won't release any nerve gas! Remember, that the way to study computing is to practice computing.
4. Do your homework and labs! Learning to program is like learning a sport. It takes actual practice and time to get comfortable with programming. The assignments that are given are opportunities to learn the material that you will be responsible for on exams.
5. Bring your work with you when you seek help from the professor.
6. Take initiative. Begin your assignments early and if you think you need help, come prepared. Use the resources that are provided for you, and be determined to succeed from the start.
7. We take your feedback seriously and act on it. Accordingly, there will be a bonus of 2% at the end of the semester offered to everyone if a threshold number of you complete the CIOS survey by the end of the semester. The threshold will depend on the number of students registered and will be announced in the first week of the semester.
Notice of Assignments and Tests
Homework assignments, including the P/F mini-assignments not summarized in the topic/schedule section above, will be announced in class and through T-Square announcements. The full specification of homework assignments (what you have to do, how to submit, etc.) will be uploaded to the Assignments page of T-Square site.
The quizzes will be announced in class and through the T-Square announcements page Quizzes will last for approximately 10 minutes.
Midterm:
-Date t.bd. This will take the entire class period.
Final:
-Date t.b.d.
Please note that the timefor all final exams are determined by the Oxford program and will be announced during the program itself. These cannot be changed. You are responsible for attending these final exams and should not make any travel arrangements requiring you to leave the UK before they have been completed.
Email Policy
You must conduct all official email correspondence for this course using your official GT email account. This is to protect your privacy. Email from outside sources such as gmail, hotmail, yahoo, and other personal accounts will be ignored.
When in need of assistance, you should first contact the TA assigned to your section. If your TA does not resolve the issue, contact the Head TA. Finally, if you still need assistance, contact the Lecturer/Professor of your section.
Be sure to put CS1315 in the subject of your e-mail!
1