UMaine COS 140: Foundations of Computer Science


(Get PDF Version)

  • Professor:: Roy M. Turner, Associate Professor of Computer Science, School of Computing and Information Science
    • Office hours:: MW 11-12
    • Office:: Boardman 240
    • Phone:: 207-581-3909
    • Email::
  • Class meetings:: MWF 9:00-9:50, Little Hall 130
  • Course website:: (or
  • TAs:: Zac Hutchinson, Brian Toner
  • Textbook:: A textbook is currently being written for this course. I will provide access to electronic versions of the textbook at no charge.

ADA notice

If you have a disability for which you may be requesting an accommodation, please contact Disabilities Services, 121 East Annex, 581-2319, as early as possible in the term.

Emergency planning

In the event of disruption of normal classroom activities due to a disease outbreak or other long-term emergency, the format of this course may be modified to enable completion of the course (e.g., via Web-based instruction). Should such an event occur, you will be provided a revised syllabus via email and the course Web site that will supersede this version; the revised syllabus will detail the alternative format of the course.

Sexual violence/discrimination policy [University wording]

The University of Maine is committed to making campus a safe place for students. Because of this commitment, if you tell a teacher about an experience of sexual assault, sexual harassment, stalking, relationship abuse (dating violence and domestic violence), sexual misconduct or any form of gender discrimination involving members of the campus, your teacher is required to report this information to the campus Office of Sexual Assault & Violence Prevention or the Office of Equal Opportunity.

If you want to talk in confidence to someone about an experience of sexual discrimination, please contact these resources:

For confidential resources on campus: Counseling Center: 207–581–1392 or Cutler Health Center: 207–581–4000.

For confidential resources off campus: Rape Response Services: 1–800–310–0000 or Spruce Run: 1–800–863–9909.

Other resources: The resources listed below can offer support but may have to report the incident to others who can help:

For support services on campus: Office of Sexual Assault & Violence Prevention: 207–581–1406, Office of Community Standards: 207–581–1409, University of Maine Police: 207–581–4040 or 911. Or see the OSAVP website for a complete list of services at

Class communication

The primary means of disseminating information will be the course website and Blackboard. Announcements, links to the textbook, assignments, and so forth will be posted on the website, and grades, some on-line assignment and practice sets, etc., will be on Blackboard. I hope to set up some discussion forums (fora?) on Blackboard or the website as the semester progresses.

You can contact me or the TA via email. We will also use email to contact you. The email address we will use for you is the one Mainestreet has for you. Thus, you need to check your Mainestreet account very soon to make sure that the email address it has for you is one at which you actually receive and check email (or that it forwards to such an address).


This course is an unusual, possibly even unique, introduction to computer science—so unusual that there is no textbook available. 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.

Several of us in the Computer Science Department (now integrated into the School of Computing and Information Science) at the University of Maine thought it was important to develop an introductory computer science course that would truly introduce the field; that is this course. Programming will not be taught, nor is programming a prerequisite for this course. Instead, this semester we will look at several fundamental areas of computer science.

In addition to introducing you to the field, we would like to introduce you to what the major will be like. So, instead of giving a high-level survey of each area studied, we will instead, after a brief overview of each area, have you study a selection of techniques in depth. This should give you an idea of the types of problems computer scientists address and how they approach these problems.

We will ask a lot of you in terms of work outside of class. (As is usual for a college course, expect an average of 6 hours of work outside of class each week if you are an average student who would like to get a C in the course.) However, this reflects the workload in other courses in the computer science major—and we are hoping that you will be engaged enough by the course material that the work will be exciting.

I am excited about having the opportunity to teach this course, and I expect us all to have a fun and intellectually challenging semester!


Students will be introduced to the field of computer science by becoming familiar with techniques from several areas in the field. Specifically, students will:

  • Understand what types of problems are addressed by computer scientists
  • Learn how computer scientists approach problems
  • Begin building the skills, other than programming, that computer scientists bring to their work
  • Gain an in-depth understanding of the techniques introduced in class
  • Begin 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
  • Assess the strength of the match between the student and the computer science major

In line with our accrediting agency’s (ABET’s) guidelines, the general outcomes assessed for this course are that the students will have:

  • 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.
  • An understanding of professional, ethical, legal, security, and social issues and responsibilities.
  • An ability to analyze the local and global impact of computing on individuals, organizations, and society.

The assessment tools will be exams (primarily) and the homework, and the assessment will obviously be appropriate for a first-year course.


Students are expected to attend all classes and will be responsible for material covered during classes or portions of classes which they miss. This material includes both course content and announcements that may be made during class. Asking the instructor or fellow classmates for missed material is a good place to start, and I’m sure we will all do our best to let you know what went on in class. However, the ultimate responsibility lies with the student who missed the class, not with those whom he or she has asked for missed material.

Class attendance may not enter directly into the calculation of your grade, but it will indirectly be part of your grade, as there may be in-class interaction that you cannot participate in if you are not present. Beyond that, attendance will almost certainly affect your grade. Class attendance will also give you an opportunity to ask questions about technical material, to have your voice heard in discussions about policies and procedures for the class, and to meet other students to form study groups for outside of class time.

If you know ahead of time that you will miss a class when homework is due, you must turn the homework in before class or have someone else bring it to class for you. If you must miss a class because of a real emergency, you should turn in the homework as soon as possible, but you are on your honor not to look at or discuss the solutions with anyone before your homework is turned in. If you miss turning in more than one homework assignment due to an emergency, special arrangements must be made.

If you miss class on the day of an exam, you must contact me as soon as possible. If you have a legitimate excuse, I may allow you to make up the exam. If you have transportation problems or oversleep, you should come to class immediately to begin taking the exam. If you do not arrive before the end of class, you should come to my office immediately.


You must sign up for one of the recitation sections that accompany this course. Recitations will be used for asking the TA questions, discussing assignments and course material, and getting help on homework. As some instructions and other information may be given out in recitation that are not given in lecture, you must attend recitation unless the TA or I say otherwise. Even if you don’t have questions, questions that others have might help you to understand the material even better—and your answers to others’ questions will be valuable too.

There are no recitations during the first week of class.


Grades will be based on:

  • Exams: 70%
    • 20% for Prelim I
    • 20% for Prelim II
    • 30% for the final
  • Homework: 30%

Course grades will be assigned using the usual grading scale (90-100 = A, 80-89 = B, 70-79 = C, 60-69 = D, and anything < 60 = F), though there can be extenuating circumstances that cause deviations from this. However, this is only done when it will raise the student’s grade.

NOTE: If you are a Computer Science major, the School requires that you attain a C or better (not a C\text{\,–}!) in this course in order to graduate. You cannot achieve this without turning in your homework!

In this class, the letter grades have the usual meaning.1 Earning an “A” means that you have done top-quality work and have excelled in meeting most course objectives. Achieving a “B” means that you have met the course objectives and have excelled in some way, for example, going beyond what is required for a “C” or exhibiting superior insight. Receiving a “C” means that you have successfully met the course objectives; a “C” is a respectable grade for an undergraduate in any course. A “D” means that you have passed, but at a low level. It should serve as a warning to you that you have not done as well as expected, that you may have trouble in computer science courses in the future, and that you are not making satisfactory progress toward your degree. An “F” means that you have not met the course objectives and have failed the course. I assign (+) and (-) grades as well to give a finer-grained evaluation of your work.

Getting help

If you are having any trouble at all with the material, please get help. The recitations are great places to get help, but if that doesn’t work out, then I am available during office hours or by appointment, as is the TA. We are more than happy to answer your questions and explain things to you that you may not understand. We understand that for many students in the course, this may be the hardest material they have covered, certainly harder than high school. Don’t be embarrassed to ask for help!

The easiest way to contact us is by email, but it is not the best way when you need help with the material. Email is best when you want to give us a message that requires no response or a short response, or when you have a straightforward question requiring a short response. For example, email is a good way to set up an appointment for a face-to-face chat or to find out the date that an exam will be given. However, if you have a question about the content of the course, a homework problem, or some other technical question, you should come to office hours. Office hours are held by both me and the TA. Even if you think it is a “quick question”, it usually requires a face-to-face conversation to have these sorts of questions answered. Often a conversation will be quick, where email will just be confusing. So, please come to office hours with these sorts of questions. Note that if you cannot make it to our offices during office hours, you can make an appointment for some other time.

Consider starting or joining a study group, too. Studying in a group is a great way to learn the material. Not only will you get help from others, but teaching others the material they may not understand is a wonderful way to solidify your own understanding.

In addition, although unfortunately it is unlikely, the Tutor Program (104 Dunn Hall, 581-2351) may have tutors available for this class. It has been the students’ experience that the tutors are very good. If you think you need tutoring, you should contact the Tutor Program as soon as possible—they base whether or not to have tutors for a class on how many students have contacted them!

In the past, we have sometimes managed to find previous 140 students who the School has hired to be drop-in tutors. I will let you know if we are able to do that this semester.

Late policy

Homework is due at the beginning of class on the due date unless otherwise announced. Because we may discuss solutions to the homework during class, no homework can be turned in late without a penalty. If you miss class, make sure that you turn your homework in before class; at worst, send an electronic copy of the homework (even if it is just a photograph of the homework) to the TA before the homework is due. Even if you feel you could do better, make sure that you turn in whatever you have completed for your homework assignment. If there is some compelling reason for your homework being late, you should talk to us about it ahead of time as soon as possible.

I may penalize late homework 10% per day or portion of a day it is late. So if you turn the homework in after class, you may lose 10%. I reserve the right not to accept homework that is 7 or more days late.

Homework, group work, and cheating

Different courses are taught in different ways, and different instructors try to achieve different things with homework. Thus, the policy for homework in this course may be quite different from the policy in another course (even a course with the same instructor). If an instructor does not tell you his or her policy, you should always ask before you work with others.

The homework in this class is meant to give students an opportunity to wrestle with the material on specific problems so that they can gain a better understanding. To reach this end, we encourage students to discuss the homework with each other to help understand the material. However, this does not mean that homework can be treated as a group assignment! Each student is expected to work on every problem on the assignment and to submit his or her own original work on the homework assignments. In particular, you cannot split up the assignment and have different people work on different problems.

Working in groups to better understand the material is encouraged for this course. However, cheating will not be tolerated. It is cheating to try to get credit for work that you did not actively participate in or to not give credit to others who also contributed to that work. We realize that it is unavoidable that group discussion will lead to answers that may be very similar. However, we expect the answers not to be identical or even substantially so (unless the answer is trivial, of course, e.g., a number). If you feel that any part of your assignment has been derived substantially from the ideas or work of others, then you need to clearly indicate this on your assignment and be prepared not receive credit for that portion. Otherwise, it will be considered plagiarism.

Cheating or any other sort of violations of academic integrity will be dealt with severely. The University’s syllabus statement about academic honesty is:

Academic honesty is very important. It is dishonest to cheat on exams, to copy term papers, to submit papers written by another person, to fake experimental results, or to copy or reword parts of books or articles into your own papers without appropriately citing the source. Students committing or aiding in any of these violations may be given failing grades for an assignment or for an entire course, at the discretion of the instructor. In addition to any academic action taken by an instructor, these violations are also subject to action under the University of Maine Student Conduct Code. The maximum possible sanction under the student conduct code is dismissal from the University.

Professor absences

Occasionally, I may have to miss class, for example, to present research at a conference, etc. If this should happen, then either the TA or another professor will teach that day, I will provide online versions of the lecture(s), or I will, if needed, schedule make-up classes.


1 This is based on information in the Handbook for the Faculty of Instruction University of Maine at Orono, which was published some years ago.