The Department of Computer Science & Engineering
CSE 111: Great Ideas in Computer Science

CSE 111: Great Ideas in Computer Science
Daniel R. Schlegel
Summer, 2011

MW, 10:00 - 2:00, 201 Capen Hall

Daniel R. Schlegel, 18 Commons, drschleg [at] buffalo [dot] edu
Office Hours: Tuesday 1:30-2:30, Wednesday 2:00-3:00, and by appointment.
Lecture: Mon/Wed 10am-2pm in Capen 201A.

Course Philosophy:
This course is based on the ideas of computational thinking and algorithmic problem solving. We’re going to cover a lot of history, background, and theory in lecture, but a large part of the work will be developing algorithms as a class and individually to solve real-life problems computationally.

Who Shouldn't Take This Class:
If you are an admitted Computer Science or Computer Engineering student, you should not take this class. If you really want to learn to program or learn Java, you should probably take CSE113 or the CSE115/CSE116 sequence. We’ll be learning some Python, but not in a lot of depth (therefore, we will be doing some programming).

Attendence and Classroom Ettequite:
Attendance to lecture and lab is both expected and required. We will be doing many activities in class and lab which cannot be properly made up outside of class. If you must miss a class after the add/drop period ends a doctors excuse will be the only way to not be penalized. Substitute work will have to be done to make up for any missed class. Having more than one unexcused absense will result in failure of the class. The only exception to this will be during the add drop period you may only accumulate up to 1 absense (ie. missing 2 classes will only penalize you 1 missed class). You will be unable to make up work from unexcused absenses. Cell phones shouldn't be used during lecture, and laptops should only be used for taking notes (I don't recommend this - it'll be really hard to take notes as I will be drawing many figures on the board).

Quizzes and Exams Grading:
Participation will be largely subjective, but it is expected that each person (or group if working in pairs for an exercise) participate during each class. As discussed before, attendance is required. Each homework problem will be assigned a point value (generally some multiple of 3 depending on difficulty), where the following scheme will be used in grading it:

0 - Did not attempt / No serious attempt
1 - Mostly incorrect solution
2 - Somewhat incorrect solution
3 - Perfect solution

If the problem is a multiple of 3, then intermediate scores will be given as appropriate. The total points received on all homeworks will then be summed and divided by the points possible and scaled as appropriate according to the percentages given below. Quizzes and exams will be graded in the same way as the homeworks.

Attendance and Participation20%
Homeworks and Labs30%
Weekly Quizzes30%
Take-Home Final Exam 20%
Total 100%

The default grading for the course will be along the univeristy's standard grading curve:

A: 93-100 C+: 77-79
A-: 90-92 C: 73-76
B+: 87-89 C-: 70-72
B: 83-86 D+: 67-69
B-: 80-82 D: 60-66
  F: 0-59

A more generous curve may be used, but should not be expected.

Note that this entire page is tentative, subject to change with notice, but this section is especially volitile.

Week Day Date  
1 Monday 6/27
First Lecture/First Lab

Lecture: Introduction to Computer Science and Algorithms
Lab: Finding What You're Looking For (Search)
Homework 1 Assigned
  Wednesday 6/29 Lecture: How Computers Work: Binary Arithmetic and Boolean Algebra
Lab: Sorting
If you're having issues with the math we are using, you might want to check out Khan Academy.
Homework 2 Assigned
  Thursday 6/30
Add/Drop Deadline
2 Monday 7/4 Independence Day - No Classes
  Wednesday 7/6 Lecture: How Computers Work: Binary Arithmetic and Boolean Algebra, contd.
Lab: Keeping Secrets Safe (Cryptography)
Homework 1 Due, Homework 3 Assigned
3 Monday 7/11 Lecture: How Computers Work: Binary Arithmetic and Boolean Algebra, contd.
Lab: Planning for People (Pipelining)
Homework 2 Due, Homework 4 Assigned
  Wednesday 7/13 Lecture: Finite Automata and Regular Expressions
Lab: Bathroom Woes (Concurrency and Parallel Processing)
Homework 3 Due, Homework 5 Assigned
4 Monday 7/18 Lecture: Turing Machines
Lab: Manufactoria
Homework 4 Due, Homework 6 Assigned
  Wednesday 7/20 Lecture: Boehm-Jacopini Theorem and Python I
Lab: (Moved to 7/25)
Homework 5 Due, Homework 7 Assigned
5 Monday 7/25 No Lecture
Lab (made up from Wednesday): Turtle Doodling
Homework 6 Due
  Wednesday 7/27
Resign Deadline

Lecture: Image Manipulation
Lab: Image Manipulation Using Loops
Homework 7 Due, Homework 8 Assigned
6 Monday 8/1 Lecture: What Cannot Be Computed and Artificial Intelligence
Lab: Famous Cognitive Scientists
  Wednesday 8/3
Last lecture

Lecture: The Internet and Social Issues in Computer Science
Take-home final assignned

Homework 8 Due
  Sunday 8/7
Final exam to be submitted electronically on UBLearns by 11:59pm

Academic Integrity:
While it is acceptable to discuss general approaches with your fellow students, the work you turn in must be your own. It is the policy of this department that any violation of academic integrity will result in an F for the course, that all departmental financial support including teaching assistanceship, research assistanceship, or scholarships be terminated, that notification of this action be placed in the student's confidential departmental record, and that the student be permanently ineligible for future departmental financial support. If you have any problems doing the assignments, consult the instructor. Please be sure to read the webpage, "Academic Integrity", which spells out all the details of this, and related, policies. See my page on plagiarism for an explanation of what I consider cheating.

Students with Disabilities:
This course will abide by the University's principles and procedures regarding students with disabilities. See the Office of Disability Services' statement on UB's Commitment to Disability Access. Notify the lecturer if you need any accommodations under these policies.

This class is based on several different books and previous instances of this course. Of note are the books "Great Ideas in Computer Science" by Alan Biermann, "Introduction to Computing and Programming in Python - A Multimedia Approach" by Mark Guzdial and Barbara Ericson and the Fall 2004 instance of this course taught by Dr. Rapaport. Some of the content on this page (mostly comics) is shamelessly taken from Dr. Rapaport's pages - he deserves the credit for finding them. The cartoons themselves are copyrighted by their respective authors, and I do not mean to impinge on that in any way.

Copyright © 2011 Daniel R. Schlegel