Main Menu

Introduction to Computer Science I, CS 210, is the first course of the core introductory Computer Science (CS) and Math and Computer Science (MACS) majors, and a core course also for Data Science (DSCI) major. Students in other majors are also welcome.

The objective of CS 210 course is to introduce the basic concepts and practices of computer science. We will cover fundamental approaches to computational problem solving (software development) and introduce other computer science topics. These are the foundation for further study of computer science, whether in the CS major or for developing and applying computational methods in other disciplines.

We will explore computational concepts using the Python programming language.

Pre-requisites

Pre-requisites for CS 210 are Math 112 (elementary functions) or math placement exam score for Math 251 (calculus for the sciences) or Math 231 (discrete mathematics I). These pre-requisites are strictly enforced.

Students are expected to have prior experience with some high level programming language such as Python, JavaScript, or Java. It is not possible for us to enforce this as a pre-requisite, but CS 210 moves very quickly, and students who have no programming experience are likely to have trouble keeping up. CS 122, Introduction to Programming and Problem Solving, is one way to obtain basic programming experience in Python programming. CS 122 is offered in the same time slot as CS 210. If you aren't sure, try to assess your readiness for CS 210 in the first week.

Learning Objectives

Upon successful completion of the course, students will be able to:

  • understand, develop, and implement algorithms for computational problem solving;
  • design, develop, and test computer programs in a disciplined, systematic manner;
  • demonstrate robust mental models of data representation and code execution;
  • demonstrate good understanding of a high level programming language;
  • implement a sampling of classic computer science problem domains and algorithms

Acquired skills

Students will also acquire skills that will be useful in further study or application of the knowledge gained in CS 210:

  • use IDLE, a simple development environment, to develop and test moderate-sized Python programs;
  • translate algorithm descriptions to working Python code;
  • write code and documentation that complies with explicit coding standards (PEP8 and additional course standards)
  • write executable test cases in a standard form
  • effectively diagnose program bugs by interpreting test outcomes and systematically gathering other diagnostic information

Textbook

We will use a free, online text. In addition, each weekly project includes a HOWTO document that must be read carefully. Expect to read the equivalent of about 20 pages per week. This will not be light reading. Expect to read much of it more than once.

Grading

Computer science, MACS, and DSCI majors must take CS 210 for a grade. Others may take CS 210 graded or P/N.

Rubric

A
Excellent performance in all parts of the class. Very well prepared to continue in computer science coursework.
B
Solid performance. You have shown a generally good grasp of the material, and should be able to apply it in more advanced classes.
C
Acceptable performance, but you will need to do better to be successful as a CS or DSCI major.
D
Your demonstrated grasp of concepts and approaches and/or your programming skills, are not yet sufficient to make use of what you learned.
F
Little or no demonstrated grasp of concepts and approaches introduced in this class, and/or failure to carry out much of the required work.

Assessments

Grades are assessed through a combination of exams, including in-class exams on paper, projects, and a coding demonstration in which a student solves a problem and explains their solution in an individual meeting with a teaching assistant. In-class exams are heavily weighted in course grading so that we can be sure grades reflect mastery by an individual student. Projects are primarily intended for formative evaluation, i.e., their primary purpose is providing practice and useful feedback for the student rather than assessing mastery.

A full table of grade weights and a schedule of projects and exams can be found in the Canvas site for the class. Plus and minus grade cutoffs are determined by the instructor to reflect overall scores close to grade cutoffs, except that A+ grades are awarded sparingly to students whose performance is exceptional across all assessed work.

Schedule of Work

A detailed schedule of work is provided in our Canvas site. In general, you can expect a major project to begin each Tuesday and be due the following Monday at 8pm. Every two or three weeks we will have an assessment activity of some kind. This will include two in-class exams during the regular term (weeks 1-10) and one in-class final exam in week 11. You will be responsible for scheduling a 30 minute individual code demonstration between weeks 3 and 9, inclusive.

Notable policies

Most policies in CS 210 follow U. Oregon standard policies established by the UO faculty senate or the provost. A more comprehensive list of policies, including references to standard UO policies, is provided in the syllabus in Canvas. Here we make note of a few policies that are more specific to CS 210, or that require some special elaboration because of the nature of CS 210.

Attendance and Participation

I do my best to make lecture an interactive, participatory experience. Watching a recorded lecture is not the same. However, it is essential that students who suspect they could be ill have no incentive to come to the classroom and spread disease. Moreover, UO policy states that absence policy must be "reason neutral" (there is no such thing as an "excused" or "unexcused" absence). I strongly encourage you to come in person and to participate in class as often as possible, but I also post a recording of lecture to Canvas. I will give a small Canvas quiz, which could be substantive or mere trivia from a lecture, that you can use to demonstrate that you were either present or have watched the recorded lecture.

Collaboration

Collaboration is an essential skill in software development. I want you to practice and improve your collaboration skills in CS 210. Nonetheless I need to assess your individual competence. These needs are in tension, but they are not contradictory. In projects, you may discuss approaches with classmates, but then you must set it aside and write it (yes, again) by yourself. You may not collaborate in any way on exams. More details of this policy are spelled out in our Canvas site.

Academic Honesty

I follow UO guidelines regarding academic honesty, including plagiarism. I take it very, very seriously. Software controls medical devices, approves home loans, lands airplanes, and will soon drive our cars. Lives depend on it, which means lives depend on the software developers who begin with courses like CS 210 to be honest. I report suspected cases of academic dishonesty to the Office of the Dean of Students. If you are found responsible for academic misconduct, I will assign you an F in the course, and the violation will be recorded in your academic records.