UMaine COS 140: Foundations of Computer Science

Note: Static information about the course is here. Everything else is on [BrightSpace]( or (mostly) [TopHat](

COS 140 is a new kind of first-year course in computer science designed to help majors begin to think like computer scientists, to help non-majors get a rigorous overview of the field, and to help undecided students find out if computer science is for them.

Usually, introductory computer science courses are programming courses. Although programming is an essential skill for a computer scientist, computer science is much broader (and much more intellectually rich and exciting) than programming. Consequently, students at many universities can easily complete the first year or more of a computer science program and have little idea of what their major will entail—or whether or not they have found a good match.

Instead, in this course students will be introduced to the field both by overviews of important areas and, at least as import, by learning about a series of problems and issues confronting those who design computers and understanding how computer scientists develop techniques for meeting these challenges. The course will give students a framework for understanding the issues surrounding computers that can be used both in advanced computer science courses and in everyday life.

The course has these objectives: by the end of the course, the students will

  • understand what types of problems are addressed by computer scientists;
  • have learned how computer scientists approach problems;
  • have begun building the skills, other than programming, that computer scientists bring to their work;
  • have gained an in-depth understanding of the techniques introduced in class;
  • have begun to apply those techniques to new problems;
  • be able to extend the concepts the techniques are based on to understand different techniques;
  • better understand what makes a computer scientist; and
  • have assessed the strength of the match between the student and the computer science major.

The major computer science accrediting agency, ABET, specifies general outcomes for a student majoring in computer science; student in this course will begin to work toward some of these outcomes, in particular to gain

  • an ability to apply knowledge of computing and mathematics appropriate to the discipline;
  • an ability to analyze a problem and identify and define the computing requirements appropriate to its solution;n
  • an understanding of professional, ethical, legal, security, and social issues and responsibilities; and
  • an ability to analyze the local and global impact of computing on individuals, organizations, and society.

The student will continue to work toward these outcomes throughout her or his studies.