Teaching Experience

Teaching Evaluations

Course Syllabi

Sample Labs & Assignments

Teaching Philosophy

CSci 1001 Syllabus

Spring 2010

Meeting time and place: The lecture portion of the class will meet 1:25 to 2:15 pm in EE/CSci 3-115. One lecture class each week will usually be a full-class discussion.

The labs will be as follows:

Section 2 (course # 76889) 8:00 - 9:30am F, EE/CSci 2-120;

Section 3 (course # 76891) 10:10 - 11:40am F, EE/CSci 2-120.


Contacts, questions, requests for help: The most efficient way to reach the class staff by email is to use the CSci1001 mailing alias: csci1001@cs.umn.edu. Mail sent to this address will go to both instructors and both TAs, and will be read promptly.



Phillip Barry: office hours 11:00 - 12:00 M, 10:00 - 11:00W

room EE/CSci6-225E

E-mail: barry AT cs.umn.edu.

Katie Panciera; office hours: 2:45 - 3:30 MW, room EE/CSci 6-198.

E-mail: katpa AT cs.umn.edu.


Faraz Mirzaei: office hours 11:00 - 12:00 Th in EE/CSci 2-209.

E-mail: faraz AT cs.umn.edu.

Tyler Smith; office hours: 5:00 - 6:00 M, in EE/CSci 2-170.

E-mail: smit4183 AT umn.edu.

Jonathon Lawson; office hours: 12:45 - 1:45 T in EE/CSci 2-170.

E-mail: lawso090 AT umn.edu.


Textbooks and readings: The textbook for this course is Invitation to Computer Science, fifth edition, by G. Michael Schneider and Judith L. Gersting. Readings from this text will be posted to the schedule on the class web page, usually at least a week ahead of time. Please complete these readings before any discussion of the material in class. In addition to the textbook we will also be posting or linking additional information to the class web page. Finally, one assignment for this class is a book review. A list of possible books for this will be posted to the class web page later this semester.


General course description: General course description: CSci 1001 provides an introduction to the great ideas of Computer Science; it is designed to help you understand the foundations, uses, and limits of today's computing and information technology, and to help you be informed contributors to the public dialog on policy issues related to computing and technology. This is not an introductory programming or "computing skills" class. Rather it is an overview of many areas of computer science including how computer scientists solve problems; the fundamental concepts underlying different computer applications or technologies such as databases or the Internet; and the key ideas in different subareas of computer science such as computer security or human computer interaction.


This course is one of several introductory courses in the Computer Science program. It is specifically designed for students seeking an overview of the field with a focus on its relevance in ordinary civic life. It is not for students who are already computer science or computer engineering majors, or for students who want an in-depth programming class. Other CSci introductory courses include:

CSci 1103 and 1113 for students interested in the practical skills of computer programming,

CSci 1901 for students interested in a major or minor in Computer Science,

CSci 3921W for students interesting in an in-depth and somewhat technical study of the social, legal, and ethical aspects of computing.


Addressing the goals of liberal education: This course fulfills two Liberal Education Requirements: the Mathematical Thinking core requirement, and the Citizenship and Public Ethics theme. To help you better understand (and benefit from) the goals of the requirement, a brief summary of those requirements and how CSci 1001 addresses them is included here. The summary is derived from the University's on-line description of the CLE requirements.


General requirements for courses in the diversified core: Core courses should expose students to disciplinary content, "ways of knowing," and, as appropriate, writing. CSci 1001 focuses not only on the basics of computer science, but also on foundational ideas, skills and techniques used by computer scientists. These include precise descriptions of computer processes, abstraction, mathematical representation of data, structured problem solving approaches, and computer program representation. The class then builds to specialized concepts such as security, cryptography, computational complexity, human-computer interaction, networking, graphics, databases, and artificial intelligence.


Specific requirements mathematical thinking courses: Courses fulfilling this requirement lead students to the ability to evaluate arguments, to detect fallacious reasoning, to evaluate complex reasoning chains, and to use different techniques and tools from mathematics. Ways in which CSci 1001 involves mathematical thinking include the following:

Using different number systems to represent and manipulate data within the computer.

Using logical expressions to explore how computers work.

Using algorithms to precisely describe computational processes.

Using counting techniques and arithmetic processes in cryptology and security.

Exploring the asymptotic rates of growth of computer tasks.

Using mathematical models of objects and movement in computer graphics and animation.


Specific requirements for citizenship and public ethics courses: Courses fulfilling this theme should cover issues related to public affairs, citizenship, and ethics, both abstractly, and applied to concrete instances. They should also include discussions and writing components to help students develop their own civic judgments, skills, and capabilities for ethical deliberation. One purpose of CSci 1001 is to educate students who are unlikely to specialize in computing, so that they can knowledgably participate in public discussion and decision-making on computing-related issues. Most weeks will have a full-class discussion session on a topic of public interest, supported by the technical aspects of the class and by readings on the topic. The discussion topics and readings will change from year to year as new issues become important.


Student Learning Outcomes: CSci 1001 addresses the following University of Minnesota SLOs (Student Learning Outcomes):

Can identify, define, and solve problems: CSci 1001 focuses strongly on solving problems using computers and computational methods. This is the theme of most of the course's written assignments, labs, and exams.

Can locate and critically evaluate information: Although locating and evaluating information is not a major topic in this course, it is present in a couple places. First, the course requires students to make extensive use of the Internet. Second, a few classes and some assignment work is devoted to the topics of information reliability and logic.

Can communicate effectively: CSci 1001 has students do in-class discussion, small group work in labs, and a collaborative writing assignment.

Understand the role of creativity, innovation, discovery, and expression across disciplines: Computers and related technologies are evolving both in terms of their own development, but also in terms of their impact on society. One of the themes in CSci 1001 is the ideas, innovations, and means of expressions that have been key to the development of computing technologies --- what discoveries and innovations have been most influential, what forms of expression computing-related hardware and software take, etc. This is assessed through in-class discussion participation and exercises, and through the book review assignment.

Have acquired skills for effective citizenship and life-long learning: CSci 1001 explores current computer-related issues in society. The course teaches students important skills --- such as using ethical theories, employing logical argumentation, identifying the many different stakeholders in computer technology, and using foundational computing ideas --- to evaluate such issues both currently and in the future. This is assessed through in-class discussion participation and exercises, and through some written assignment and exam problems.

Prerequisites: CSci 1001 fulfills the CLE mathematics core requirement, so it has solid mathematical content. However, it is designed to be a introductory course for non-technical students (though scientists and engineers are certainly welcome). Therefore, it has no prerequisites and should be appropriate for anyone with a High School education --- the mathematical sophistication gained through meeting the University's entrance requirements should give students a sufficient background.

Workload: in accordance with University policies, students should expect to spend a total of about 12 hours a week to complete the basic requirements of the course (that time includes four hours of time in class, reading time, assignments, and study time). Of course, each of you is different. Some people read and study faster; others take longer. Please remember that the University policy was based around the idea that meeting the basic requirements represents a C grade. To earn a higher grade requires working harder, smarter, or both.


Course Structure:

The course has seven major components:

Class lectures (usually twice each week) will focus on topics from Computer Science, covering both technical aspects and their relevance to today's issues.

Class discussions (usually one day per week) will provide an opportunity for interactive discussion and debate of current Computer Science-related social, economic, and technical issues facing society. Participation in class discussions is required. Specifically, you are expected to have read assigned readings and to contribute to the weekly discussions. Well-considered questions can be as important as comments or statements. While it is not necessary to contribute each and every week, you are expected to participate regularly.

Laboratory sections (once per week) will provide a opportunity for hands-on exploration of some course content. Sessions are held in a classroom laboratory where exercises can be completed by pairs of students working on computers. Participation is required and graded.

Reading assignments, both from a textbook and from on-line sources, are designed to prepare you for course assignments, exams, and discussions. Reading assignments are to be completed before the class session for which they are due.

Written assignments are designed to help you explore Computer Science concepts in depth. Unless otherwise stated, these assignments must be completed individually, and will be due about every other week.

The book review assignment requires you to read and report on one of a set of books relevant to the course. The book review will be explained further in a posted assignment description.

Exams: There will be two midterms exams on Monday, March 1st and Monday, April 19, and a final from 8-10am on Wednesday, May 12. The exams are open book, open note; however, the expectation is that you will need to refer to the book or your notes only quickly, if at all. No other aids, such as electronic devices, are permitted during the exams. Please note the dates of the exams carefully, as make-ups will be given only under extreme circumstances.

Course Goals:

Show the important concepts and ways of thinking of computer science: What types of work do computer scientists do? How do they solve problems? What are the most important concepts and tools in computer science?

Fulfill the CLE mathematical core requirement by exploring some of the many ways mathematics is useful in computer science.

Fulfill the CLE citizenship and public ethics theme by exploring how ethical issues involving computing, as well as how computer technology affects, and is affected by, civics considerations.

Learn and practice some computer-related 'skills' such as how to construct a web page, how to use a database, and how to do introductory programming.

Late Assignments: Late assignments are penalized 10% if turned in after the start of the lecture or laboratory session where they are due, but before the end of that day. They are penalized 20% per weekday every day after that. Assignments will not be accepted after one week late, or after any answer key is posted.


Grading: Your overall course grade will be based on assignments (25%); lab participation and performance (12%); participation in class discussions, and in-class exercises (8%); the book review (10%); the March 1 midterm (10%); the April 19 midterm (15%); and the final exam from 8-10am on May 12 (20%). The course is graded on an absolute scale, with the following grade ranges:

      93.0% -- 100.0%   A
      90.0% --  93.0%   A-
      87.0% --  90.0%   B+
      83.0% --  87.0%   B
      80.0% --  83.0%   B-
      75.0% --  80.0%   C+
      70.0% --  75.0%   C
      65.0% --  70.0%   C-
      60.0% --  65.0%   D+
      50.0% --  60.0%   D
       0%   --  50.0%   F

Working in pairs, studying in groups, getting help: In most lab sessions you will be expected to work in pairs. We encourage you to select a new partner for each session. Working in pairs may be a new experience for some of you. The goal of such work is not simply to "get it done quickly" but rather to make sure that, by working together, both of you master the material. If you feel that you are in a pair where you know more than your partner, take advantage of the opportunity to learn by teaching. If you feel that your partner seems to know everything, then learn from his or her expertise. And if you are well-matched, then challenge yourselves to work together to learn new material. In addition to working in pairs on the lab work, you will also work in pairs on the book report. The details of this will be explained later, but you are encouraged to get to know others in the class so you know which people you'd prefer to work with.


The written assignments are individual assignments. On these, you may do preliminary studying in groups, but your work on the assignment must be yours alone. The practical way to ensure that you are not "going over the line" is to spend as much time as you like together discussing readings, course concepts, etc. However, when it becomes time to start working on answers to the assignment questions, please work independently. Copying another student's work is academic dishonesty, and it will be dealt with severely. Giving answers to another student or getting answers from someone else (even a non-student) is also dishonest. Getting answers from the Internet is OK only if you honestly attribute the source of the information, and the information you obtain is supportive of, but not replacing, your own effort. Using course readings to support your answer is always acceptable.


If you feel you need help on any assignment, come see one of the course instructors or TAs. We're willing to spend time to work with students who are making a good-faith effort to learn.


Course computing: By registering for this course you will receive an account on the IT Laboratories computers. This account will give you access to the computers in the class laboratories, as well as in a number of laboratories throughout the Institute of Technology (see www.itlabs.umn.edu for a complete list of laboratories and facilities). You are welcome to use these for any exploration you do as part of this course. However, you are not required to use them outside of class sessions. Any personal computer, Windows, Mac, or other, with a Web browser, word processor, and spreadsheet should be sufficient for the class assignments.


In this class, our use of technology will sometimes make students' names and U of M Internet IDs visible within the course website, but only to other students in the same class. Since we are using a secure password-protected sites, this should not increase the risk of identity theft or spamming for anyone in the class. If you have concerns about the visibility of your Internet ID or any other privacy concerns relating to the technology used in the course, please contact the professor for further information.


Incompletes: will be given only in very rare instances when an unforeseeable event causes a student who has completed all or almost all of the coursework to date to be unable to complete a small portion of the work (typically the final assignment or exam). Incompletes will not be awarded for foreseeable events including a heavy course load or a poorer-than-expected performance. Verifiable documentations must be provided for the incomplete to be granted, and arrangements for the incomplete should be made as soon as such an unforeseeable event is apparent. Any incomplete grade will require a written agreement on the work to be completed.


Withdraws: You are free to withdraw from the class up to the end of the eighth week of classes. Withdrawing thereafter is up to the college, and is not automatic. If you are not doing as well as you had hoped in the course, and are considering withdrawing, please do so by the end of the eighth week.


Class decorum: This an interactive class with students from a wide variety of backgrounds. In order to have useful discussions, we all need to observe basic classroom decorum. This includes silencing all electronic devices, refraining from talking (except as part of class participation), and listening respectfully to your peers. During class discussions, we hope there will be divergent opinions that will provide insight into the different aspects of the topics we explore. However, ideas should be presented respectively --- if you disagree with someone state your disagreement in a constructive way.


Schedule*    last revised 29 Apr 2010

Reading (Schneider and Gersting)
& Exams
Jan 20
What is the Purpose of this Class?
Chapter 1
Jan 22 Algorithms
Chapter 2

Jan 22 Lab Getting Started in the Lab

Lab 0 (done in lab)
Jan 25

Jan 27
Introduction to Ethics and Computing
Ethics notes; Ch. 17.1, 17.2.1, 17.2.3

Jan 29
Data Representation
Chapter 4 (p. 130-149)

Jan 29 Lab

Lab 1 (done in lab)
Feb 1
Data Representation http://simple.wikipedia.org/wiki/Negative_binary_numbers, and
http://stackoverflow.com/questions/1049722/2s-complement-defined, and
(through addition)
Feb 3
Logic Chapter 4 (p. 157-159)
HW 1 due
Feb 5
Chapter 4 (p. 157-159)
HW 2 posted
Feb 5 Lab
Data Representation
  Lab 2 (done in lab)
Feb 8
Look over your notes from Feb. 3 and 5

Feb 10
Logical Arguments and Information Reliability
logical argument notes

Feb 12
System Organization
Read 5.1, 5.2, and 5.5; skim 5.3; skip or skim 5.4
Feb 12 Lab

Lab 3 (done in lab)
Feb 15
System Organization

Feb 17
Discussion: Computing Device Trends and Hardware Trends
1984 Macintosh Review and 2007 iPhone Review and
Apple Comparison and Intro to Moore's Law
HW 2 due
Feb 19
Operating Systems; Introduction to Book Report Read p. 263-272, skim p. 273-283 HW 3 posted
Feb 19 Lab
Online Writing

Lab 4 (done in lab)
Feb 22
Computer Security
Chapter 8

Feb 24
Discussion: How Secure are our Computers?
Feb 26
Computer Security
Feb 26 Lab
Review for Midterm 1

Lab: Midterm Review
Mar 1
Midterm 1

Mar 3
Human/Computer Interaction
Introduction to User Interfaces (PDF)
Mar 5
Human/Computer Interaction
Cognitive Walkthrough and Heuristic Evaluation and
Usability Testing
Book selection due 5pm
Mar 5 Lab

Lab 5 (done in lab)
Mar 8
Algorithm Efficiency
Chapter 3: 3.1 & 3.2

Mar 10
Algorithm Efficiency
Chapter 3: 3.3
HW 3 due
Mar 12
Algorithm Efficiency
Chapter 3: 3.4 & 3.5
Mar 12 Lab
Algorithm Efficiency

Lab 6 (done in lab)
Mar 15-19
Spring Break

Mar 22
HTML and web pages

Mar 24
HTML and web Pages
Section 10.3.2;
HTML Tutorial (read all the "HTML Basic" items)
Mar 26
Guest speaker: digital technology and copyright
Mar 26 Lab
HTML and Web Pages
CSS Tutorial (You don't need to read all this, but skim the first few pages before lab) Lab 7 (done in lab)
Mar 29
Introduction to Programming and Software Development
Sections 9.1, 9.6, 10.1

Mar 31
Discussion: risks and software development
IEEE Code of Ethics and ACM Code of Ethics(pdf) HW 4 due
Apr 2
Guest speaker: computional biology
Apr 2
Algorithm review

Lab 8 (done in lab)
Apr 5
Python programming

Apr 7
Python programming
Apr 9
Python programming
Section 2 of Online Python Chapter (posted on class wiki)
Initial version of book review due
Apr 9
Python Programming

Lab 9 (done in lab)
Apr 12
Python programming
Python handout
Apr 14
Python programming
  HW 5 due
Apr 16
Discussion: Benefits and Harms of Computing
Apr 16
Review for Midterm 2

Lab: Midterm 2 Review
Apr 19
Midterm 2
Apr 21
The Internet
Chapter 7  
Apr 23
Discussion:Net Neutrality
Read the Wikipedia net neutrality page (up to and including the "mixed and other views on net neutrality" part)  
Apr 23
More Python Programming

Lab 10 (done in lab)
Apr 26
Internet, Databases
Chapter 14.3
Apr 28
Apr 30
In-class Exercise:
More Python Practice
  Final version of book review due
Apr 30

Lab 11 (done in lab)
May 3
Computer Graphics
Chapter 16
May 5
Discussion: Question and Answer
  HW 6 due
May 7
Summary and wrap up
May 7
Final Review

Lab: Final Review
May 12
Final Exam

            * This schedule is subject to change as the class progresses.

© 2015 Katie Panciera