Computer Science Courses

The School of Computing and Information Science offers a wide array of courses in computer science for majors and non-majors, both at the undergraduate and graduate levels.  Although we try to keep the information on this page up to date, computer science is a rapidly-changing, dynamic field, and so the courses we offer change frequently.  The definitive list of our courses is in the UMaine catalog, available online a catalog.umaine.edu.

Undergraduate courses

For more information about these courses, please contact an undergraduate coordinator, either Chris Dufour or Roy Turner.

COS 100 – Success in Computer Science

Orientation to college, particularly for those majoring in computer science. Introduction to the campus, resources available to students, and to the UMaine academic community. Introduction to the School of Computing and Information Science (SCIS), including the people, physical and computational facilities, and available resources for success. Introduction to computer science as a major, field, and a future career. Introduction to majoring in computer science, including techniques and strategies for success, both in general and in the major. Introduction to the College of Liberal Arts (CLAS), its characteristics, values, people, and academic community.

Prerequisites: First-year students with declared COS major.

Course Typically Offered: Fall

Credits: 1

COS 103 – Introduction to Spreadsheets

Topics include design and use of spreadsheets to solve problems using formulas, charts, and data functions. Credit does not count towards the COS major. This course assumes practical skills with the Windows operating system.

Prerequisites: None

Course Typically Offered: Fall, Spring, Summer

Credits: 1

COS 120 – Introduction to Programming I

Topics include the development of programming skills in the novice with instruction in a sample programming language. A laboratory/recitation session is included. Credit does not count towards the computer science major. This course assumes knowledge of the Windows operating system, basic word processing, and file and folder management.

Prerequisites: None

General Education Requirements: Quantitative Literacy

Course Typically Offered: Fall, Spring, Summer

Credits: 3

COS 125 – Introduction to Problem Solving Using Computer Programming

An introduction to computer science through problem solving and computer programming. Topics include variables and operators, control logic, functions, strings, loops, input/output, and recursion. Programming concepts covered by this course include modularity, abstraction, top-down design, specifications, documentation, debugging, and testing. No prior programming experience is expected. Required for majors.

General Education Requirements: Quantitative Literacy

Prerequisites: A grade of C or better in MAT 122, or no grade record in MAT 122 and a passing score on Part 3 of the Math Placement Exam.

Course Typically Offered: Fall and Spring

Credits: 4

COS 135 – Applied C Programming

Studies the C programming language, introduces concepts in computer hardware and operating systems to support discussion of how a computer program is represented from the machine layer to the application layer.

Prerequisites: COS 140 and either COS 120 or 125

Course Typically Offered: Spring

Credits: 3

COS 140 – Foundations of Computer Science

A rigorous, non-programming introduction to the field of computer science. Several core areas of computer science are introduced, including digital logic, computer organization and architecture, operating systems, programming languages, and computer networks. For each, particular solutions to fundamental problems in the area are studied in depth to expose the student to what the field is actually about how computer scientists think. No programming is taught or required in the course.

Prerequisites: None

Course Typically Offered: Fall

Credits: 3

COS 198 – Topics in Computer Science

Introductory topics in computer science not regularly covered in other courses. Content varies to suit current needs. May be repeated for credit.

Prerequisites: Permission.

Course Typically Offered: Not Regularly Offered

Credits: 1-3

COS 211 – Principles of Data Processing

Presents basic concepts in database management systems using a microcomputer database system and basic theory of database design. Students will construct systems in various application areas. Credit does not count toward the computer science major.

Prerequisites: None

Course Typically Offered: Not Regularly Offered

Credits: 3

COS 213 – Advanced Excel Spreadsheet Design

This course explores techniques in spreadsheet software as used to develop business-related applications. Topics include formulas and functions, charting, data operations, pivot tables, goal seeking, what-if analysis, management of large workbooks, and macros. The programming language VBA (Visual Basic for Applications) is introduced. [Note: Course does not count towards the computer science major.]

Prerequisites: None

Course Typically Offered: Fall, Spring, Summer

Credits: 3

COS 220 – Introduction to C++ Programming

Topics include programming techniques with a brief introduction to hardware concepts as they apply to software development. Students are assigned programs emphasizing numerical algorithms for implementation in the C++ language. Assumes knowledge of the Windows operating system, basic word processing, and file and folder management. Some prior experience in programming logic, macros, or scripting is recommended. [Note: Course does not count towards the computer science major.]

Prerequisites: None

General Education Requirements: Quantitative Literacy

Course Typically Offered: Spring

Credits: 3

COS 221 – Data Structures in C++

This course introduces object-oriented programming techniques and data structures in C++. Topics include class design, dynamic memory management, lists, stacks, queues, trees. STL, algorithm efficiency, searching, and sorting algorithms. [Note: Course does not count towards the computer science major.]

Prerequisites: COS 220 or ECE 177.

Course Typically Offered: Fall

Credits: 3

COS 225 – Object-Oriented Design, Programming and Data Structures

Introduces the student to the fundamental principles of object-oriented design and programming using a high-level object-oriented language. Focuses on the specification, design, and implementation of classes and the interactions between classes, inheritance, abstract classes, and polymorphism. Introduces fundamental data structures including stacks, queues, lists, and binary trees.

Prerequisites: Grade of C or higher in COS 125

Course Typically Offered: Fall and Spring

Credits: 3

COS 226 – Introduction to Data Structures and Algorithms

Introduction to the fundamental principles of data structures, including their use, specification, and implementation, as well as fundamental principles of algorithms related to data structures. Data structures covered include lists, trees, graphs, and hash tables. Also covers fundamentals of algorithm analysis and a basic introduction to NP-completeness.

Prerequisites: C or higher in COS 225.

Course Typically Offered: Fall and Spring

Credits: 3

COS 235 – Computer Architecture

Examines the architecture and organization of the computer including digital logic, the CPU, busses, internal and external memory, computer number representation, and computer instructions. Particular attention is paid to assembly and C languages as a mechanism for better understanding the architecture.

Prerequisites: COS 135

Course Typically Offered: Spring

Credits: 3

COS 250 – Discrete Structures

Introduction to discrete structures used in various areas of computer science. Topics include logic, sets, relations, functions, cardinality, enumeration, and computability.

Prerequisites: Grade C or in MAT 126 and COS 125; or ECE major with a Grade C or higher in MAT 126 and in ECE 177

Corequisites: COS 140 [I.e., COS 140 is required prior to or the same semester as COS 250.]

Course Typically Offered: Fall

Credits: 4

COS 301 – Programming Languages

Introduction to the fundamental concepts of formal languages, as well as the evolution and characteristics of major programming languages. Topics include finite-state automata, regular expressions, parsing, syntax and semantics, scope and binding, data types, and abstract data types.

Prerequisites: COS 226 and COS 250

Course Typically Offered: Fall

Credits: 3

COS 312 – An Introduction to Video Game Programming with the Unity Game Engine

A high-level approach to game programming uses one of the game engines commonly employed by game-development companies. Among these is Unity, a game engine that can create standalone video games for PCs and Macs, as well as versions playable in a web-page environment. Built-in tools include character controllers, cameras, lights, shaders, a powerful physics engine, terrain editors, tree generators, and more. Many of these are scripts written in Javascript, C#, or Boo. While many of the exercises stress the scripting aspects of working with Unity, a student who is a beginning programmer can create significant game content using only the pre-packaged assets that are a standard part of the Unity system.

Prerequisites: COS 125

Course Typically Offered: Spring

Credits: 3

COS 331 – Operating Systems

Study of the structure of current computer operating systems. Topics include I/O management, memory management, multiprogramming, linking loaders, real and virtual systems, batch, and time sharing.

Prerequisites: COS 226 and COS 235 or permission.

Course Typically Offered: Fall

Credits: 3

COS 397 – Computer Science Capstone 1

The first of a two-course sequence, designed to guide students in proposing the Capstone project in either an independent study, group project, or field experience format. The focus is on the early stages of project work, including finding a suitable topic and project advisor, investigating related work, and writing a thorough project proposal. The relevant skills are covered and practiced by studying a collection of classic and topical papers.

General Education Requirements: Upon completion of the two-course sequence (COS 397 & COS 497), satisfies the General Education Writing Intensive and Capstone Experience Requirements.

Prerequisites: COS 420 [Note: Should only be taken by computer science majors.]

Course Typically Offered: Fall

Credits: 3

COS 412 – Advanced Game Programming with Unity

Building on tools acquired in COS 312, this course’s only prerequisite, students explore an advanced topic of their own choosing as they build their full final game. Possible topics include advanced Artificial Intelligence scripting, Navmesh, networked games, 3D character rigging, and animation, use of the Oculus Rift virtual reality goggles, and much more. With weekly in-class presentations and bi-weekly written reports, students document their progress and communicate their new tools to the rest of the class. The final game is presented to the public at the end of the semester Demo Day. If this course was taken as a topics course in COS 498, it cannot be repeated for credit.

Prerequisites: COS 312

Course Typically Offered: Variable

Credits: 3

COS 415 – Computer Simulation and Modeling, from Development to Display

The process of designing and using a computer model is examined in detail. The development of the model equations, numerical techniques for solving them, and basic graphical techniques for displaying the results of the calculations will be presented.

Prerequisites: Familiarity with a programming language or permission

Course Typically Offered: Variable

Credits: 3

COS 417 – Spatial Interaction Design

The objective of this course is to provide a hands-on experience of interaction design research practice focusing on interactive prototype construction. The principles and technologies of interaction design will be learned through adding expressive interactions to objects and spaces around us (spatial interactions). Interaction Design (IxD) discovers people’s needs, understands the context of use, frames product opportunities, and proposes useful, usable, and desirable (usually digital) products. Interaction designers often work with narrative to explore and refine desired behaviors and user experience.

Prerequisites: COS 226 or permission

Course Typically Offered: Spring

Credits: 3

COS 420 – Introduction to Software Engineering

A broad view of software engineering which introduces a variety of software engineering techniques which can be applied to practical software projects. Topics include process models, human factors, software specification; software design, programming techniques and tools, and validation.

Prerequisites: COS 226

Course Typically Offered: Spring

Credits: 3

COS 430 – Introduction to Cybersecurity

An overview of Cybersecurity as information security, policies, guidelines, and legal issues; the nature of network and computer attacks, system vulnerabilities and defense; implementation issues in Unix/Linux. Projects include system setup, attack, and defense.

Prerequisites: COS 235 and COS 331.

Course Typically Offered: Spring

Credits: 3

COS 435 – Information Privacy Engineering

Overview of the current privacy (and security) regulations across the world and the associated privacy (and security) challenges, methodologies and algorithms for applications ranging from Cyber-Physical Systems, the Internet of Things, Android/iOS applications, and machine learning models.

Prerequisites: COS 420

Course Typically Offered: Fall

Credits: 3

COS 440 – Computer Networks I

Covers data and computer communications using the ISO model. Discussion of physical media, communication protocols, and network architectures including wide area and local area networks. Includes examples of networks currently in use.

Prerequisites: COS 331 or permission.

Course Typically Offered: Variable

Credits: 3

COS 451 – Automata, Computability, and Languages

Fundamentals of formal languages and the mathematical theory of computation; finite-state automata, nondeterminism, regular expressions, and Kleene’s Theorem; context-free grammars, pushdown automata, the correspondence theorem, and the pumping lemma; computability, Turing machines, and the halting problem.

Prerequisites: COS 301

Course Typically Offered: Spring

Credits: 3

COS 454 – Data Structures and Algorithms

Covers advanced data structures and the algorithms associated with them as well as advanced methods of algorithm analysis, including time and space complexity classes and NP-completeness.

Prerequisites: COS 226 and COS 250

Course Typically Offered: Spring

Credits: 3

COS 460 – Interactive Computer Graphics

Topics include graphic I/0 devices: plotter, CRT, and light pen; vector generation; transformation of two/and three-dimensional objects; clipping and windowing; hidden line removal; interrupt handling; interactive techniques; data structures for graphics; and various display algorithms.

Prerequisites: COS 226 or equivalent and MAT 126 and junior standing or permission.

Course Typically Offered: Variable

Credits: 3

COS 465 – Data Visualization

Introduction to the goals, techniques, implementation, and evaluation of visual representations for large quantities of data. Students work with a team to produce a novel visualization solution for a client with application domain data and goals. COS 465 and COS 565 cannot both be taken for credit. COS 465 and COS 565 cannot both be taken for credit.

Prerequisites: COS 226 or permission

Course Typically Offered: Spring

Credits: 3

COS 470 – Introduction to Artificial Intelligence

Introduces the student to the field of artificial intelligence, including fundamental areas and concepts such as heuristic search, knowledge representation, automated reasoning and planning, deep learning, intelligent agents, and multiagent systems. Experience in AI programming is provided by homework assignments and a semester project.

Prerequisites: COS 226 or COS 221 or permission

Course Typically Offered: Every Year

Credits: 3

COS 480 – Database Management Systems

Covers database management systems from the perspective of database designers and database application programmers. Topics include Entity-Relationship modeling, relational databases, transactions and isolation, and Web-database applications. Includes both individual programming assignments and semester-long group projects culminating in demonstrations of substantial database applications.

Prerequisites: COS 301 or permission.

Course Typically Offered: Every Year

Credits: 3

COS 490 – Computers, Ethics and Society

Consideration of human and social consequences of technological development and application of computers, ethical questions of computer use, professional ethics.

General Education Requirements: Satisfies the General Education Ethics and Writing Intensive Requirements.

Prerequisites: COS 226 and Junior Standing or permission

Course Typically Offered: Fall

Credits: 3

COS 497 – Computer Science Capstone 2

The second of a two-course sequence, designed to guide students in completing the Capstone project in either an independent study, group project, or field experience format. The focus is on the later stages of project work, including completing the programming tasks, evaluating the implemented systems, documenting all work in a project report, demonstrating the work in action, and making a public oral presentation. The relevant skills are covered and practiced by studying a collection of classic and topical papers.

General Education Requirements: Upon completion of the two-course sequence (COS 397 & COS 497), satisfies the General Education Writing Intensive and Capstone Experience Requirements.

Prerequisites: COS Majors with Senior standing, COS 397, and permission.

Course Typically Offered: Spring

Credits: 3

COS 498 – Topics in Computer Science

Topics not regularly covered in other courses. Content varies to suit current needs. May be repeated for credit.

Prerequisites: One semester of programming. [Note: Individual courses offered under this designator may require additional prerequisites.]

Course Typically Offered: Variable

Credits: 1-3

COS 499 – Senior Project

An undergraduate research project in computer science under the direction of an approved advisor. An individual or small group will work on the conception, design, and implementation of a significant computer science project. A presentation, open to interested faculty, staff, and students may be required at the completion of the project.

General Education Requirements: Capstone

Prerequisites: Permission. [Note: This has been largely replaced by the Capstone sequence, COS 397 & COS 497. For additional information, speak with your academic advisor.]

Course Typically Offered: Fall, Spring, Summer

Graduate courses

For more information about these courses, please contact the graduate coordinator, Prof. Terry Yoo.

COS 515 – Topics in Scientific Computation: Simulation and Modeling

The purpose of designing and using a computer model is examined in detail. The development of the model equations, numerical techniques for solving them, and basic graphical techniques for displaying the results of the calculations will be presented.

/Prerequisites & Notes:/ Familiarity with a programming language and/or permission.

Credits: 3

COS 520 – Software Engineering I

Specification, design, implementation, and maintenance of reliable software. Various methodologies will be explored with Ada as the implementation tool.

/Prerequisites & Notes:/ COS 350 and COS 431.

Credits: 3

COS 550 – Theoretical Computer Science I

A survey of automata theory, formal languages, undecidability, and computational complexity.

/Prerequisites & Notes:/ COS 301 and COS 250.

Credits: 3

COS 554 – Algorithms

Important algorithms and their application to solving problems.

Prerequisites & Notes: COS 350

Credits: 3

COS 565 – Data Visualization

Introduction to the goals, techniques, implementation, and evaluation of visual representations for large quantities of data. Students work with a team to produce a novel visualization solution for a client with application domain data and goals.

Prerequisites & Notes: COS 226 or permission of instructor.

Credits: 3

COS 570 – Topics in Artificial Intelligence

May be repeated. [Note: Often cross-listed with COS 470. This serves as the primary AI course for computer science graduate students. In the future, we plan to change the name of this course to “Artificial Intelligence” and create a new course designator for the “Topics in AI” course.]

Prerequisites & Notes: permission.

Credits: 3

COS 580 – Topics in Database Management Systems

Prerequisites & Notes: May be repeated.

Credits: 3

COS 598 – Advanced Topics in Computer Science

Topics in computer science not regularly covered in other courses. May be repeated for credit.

Note: This course designator is often used to offer new courses while they are being approved under their real future designator. Currently, there are two such courses:

  • COS 598: Machine Learning
  • COS 598: Computer Vision

For information about these or other COS 598 courses, please contact the graduate coordinator, Prof. Terry Yoo.

Prerequisites & Notes permission.

Credits: 1-3

COS 599 – Graduate Project

Arranged.

Credits: Ar

COS 699 – Graduate Thesis/Research

Graduate thesis or research conducted under the supervision of the student’s advisor.

Prerequisites & Notes: Students who have not yet completed a “Responsible Conduct of Research” course approved by the Office of Research and Sponsored Programs and the Graduate School (https://umaine.edu/graduate/students/rcr/) must receive permission to enroll in thesis/ research credits. Students must enroll in an RCR course before or concurrent with their third credit of thesis/research.

Credits: Ar