University of Maine at Farmington 2019-2020 Catalog

 
The University
Academic Organization, Faculty Listing
Academic Programs
Courses
Admission, Costs, Financial Aid
Academic Policies
Personnel
Notices
UMF Logo
 
Context

Computer Science
Print This Page

  COS 115 - Computing Across the Disciplines

This course will cover the role of computer science in disciplines from across campus including but certainly not limited to philosophy, the natural sciences, business, languages, the social sciences, and the arts. Every two years.



Credit: 4

  COS 120 - Web Development

In this course students will learn about a variety of Internet computing topics including but not limited to web programming, web site design and management, server-side technologies, social networking, Web 2.0, and mobile computing.  Specific technologies covered include but are not limited to HTML, CSS, Javascript, XML, database management and querying, Web API's, and Ajax. There will be an emphasis on the meaningful use of current technology to communicate effectively. Every fall.



Credit: 4

  COS 140 - Introduction to Computer Science

Using the framework of problem solving and programming in the object-oriented paradigm, this course introduces the fundamental concepts and techniques of Computer Science.  Students learn how to develop problem solutions by integrating pre-defined or user-defined data objects and the control algorithms that make use of the objects.  Topics include object design and use, algorithmic control structures, interactive and file-based input/output and some basic structured data objects such as strings, arrays, lists and tables. Every year.



Credit: 4

  COS 142 - Data Structures

The focus of this course is deeper study of the concepts of structured data types, in particular their design and specification in an object-oriented framework.  Data structures such as lists, stacks, queues and trees will be examined, both in terms of how they can be implemented by a programmer and how they can be used to develop solutions for larger problems.  New object-oriented programming concepts such as inheritance, polymorphism and generic classes will be introduced as techniques to aid in the implementation of these structures, and related algorithmic topics such as recursion, searching and sorting will be studied. Prerequisite(s): COS 140 (Introduction to Computer Science). Every spring.



Credit: 4

  COS 241 - Computer Organization

This course is intended to give students a broad overview of computer organization at a number of different levels. The lowest level is the assembly language level. Students will gain an understanding of instruction set architecture design and tradeoffs. The next level, fundamentals of logic design, provides an understanding of the implementation of a given architecture. Topics include adders, shifters, multipliers, and flip-flops. Higher levels include pipelining and caches. Other topics include storage (along with input/output) and multiprocessors. Laboratory work includes an assembler with which students write assembly language programs and possibly a digital logic design package. Prerequisite(s): COS 140. Varies. 



Credit: 4

  COS 277 - Topics in Computer Science

The study of a specialized topic not offered in the usual curriculum. Varies. 



Credit: 2-4

  COS 280 - Networking Using TCP/IP

This course provides an extensive study of both the OSI model as well as the TCP/IP protocol suite.  Examination of wired and wireless technologies. Topics include IP addressing, routing, ARP, details of the IP and TCP protocols, ICMP, UDP, DHCP, DNS, application protocols such as mail and http. Introduction to the Linux operating system including user/group management, processes, basic bash scripting, permissions, file system design (inode structure). Applications involve setting up (in Linux) a network and providing  DHCP and DNS servers for that network, Study of firewalls and setting up a firewall such as IP tables, and use of a packet analyzer to better understand the protocols and diagnose problems. Prerequisites: COS 142. Even spring.



Credit: 4

  COS 297 - Independent Study in Computer Science

An opportunity to pursue independent study of selected intermediate level computer science topics under the direction of a faculty member. The course may be repeated for a different topic. Prerequisite(s): 4 credits of Computer Science and permission of instructor. Varies.



Credit: 1-4

  COS 355 - Computer Graphics

Mathematical techniques for generating computer graphics of 2- and 3- dimensional objects will be studied. Implementation of these concepts, up to and including perspective projection and 3D transformations, in a higher level language will be involved. At this point, an API (usually OpenGL) will be used to aid in the writing of more sophisticated applications involving lighting and texture mapping. A study and design of the human interaction component, dealing with graphical design interfaces and event-driven programming, occurs throughout the course. Selected additional topics may include game programming, image processing, ray tracing, and designing more complex graphical interfaces. The course has a laboratory component. Prerequisite(s): MAT 141M and COS 142. Even fall.



Credit: 4

  COS 360 - Programming Language Concepts

An examination of issues involved in the design and implementation of high-level computer languages. Starting from a working interpreter for a very simple programming language, we first consider general issues such as syntax grammars, semantic descriptions, and the mechanisms used in translating a high-level language into an equivalent lower-level executable form. Following that we gradually introduce new language features, each requiring further modifications to our language's syntax and interpreter, which provides a basis for studying more advanced programming language features. Prerequisite(s): COS 142. Odd fall.



Credit: 4

  COS 364 - Algorithm Design and Analysis

Examines algorithm design techniques such as divide-and-conquer, dynamic programming, the greedy approach, backtracking, and branch-and-bound. Representative algorithms are studied in each category, with an emphasis on demonstrating an algorithm's correctness and analyzing its efficiency in terms of computing time and storage space requirements. The notion of intractable problems is introduced, along with efficient approaches to these problems, such as approximation algorithms. Prerequisite(s): COS 142 and MAT 151M. Even fall.



Credit: 4

  COS 372 - Computer Operating Systems

An investigation of operating system concepts including processes, threads, CPU scheduling, process synchronization, deadlocks, memory management, caching policies, storage management (file-systems, mass storage structure, I/systems), protection distributed systems. Case study of a particular operating system (usually Linux).  Programming projects applied to selected topics.  Prerequisite(s): COS 142. Odd fall.  



Credit: 4

  COS 377 - Intermediate Topics in Computer Science

Each time this course is offered a Computer Science topic will be chosen which requires a background (at least 12 hours) in college level computing experience. It may be repeated for credit with different topics. The topics offered will be ones which are not covered in the regular course offerings of the division. Prerequisite(s): Minimum 12 credits of Computer Science, including COS 142. Varies. 



Credit: 4

  COS 396 - Internship in Computer Science

This course provides the student with an in-depth experience in practical applications in computer science. The experience may include work for a social or governmental agency or for business or industry. Proposals should be developed in consultation with a faculty member and submitted in writing to the division chair for approval. At the conclusion of the work period, the student submits a comprehensive report on the experience to the supervising faculty member. The course may be repeated for up to a total of 16 credits; each repetition must be a different proposal. Credits will generally reflect 32 work hours for each credit. Prerequisite(s): 16 hours of Computer Science and approval of the supervising faculty member and the Division Chairperson. (Pass/Fail only) Every semester.



Credit: 1-16

  COS 397 - Independent Study in Computer Science II

An opportunity to pursue independent study of selected computer science topics under the direction of a faculty member. The course may be repeated for a different topic. Varies.



Credit: 1-4

  COS 455 - Database Systems

The course studies the fundamentals of database modeling and design, the languages and facilities provided by a database management system, and programmatic interfaces to the database (including web access). Emphasis is on the relational database model. Theoretical topics include: data modeling using the entity-relationship model, schema definition, relational algebra, functional dependencies and normal forms, queries, data storage and physical design, and indexing structures for files. In addition, there is a laboratory component that uses the Oracle database.  In the laboratory, the topics include: SQL query language, PL/SQL language, creation of a web interface to the database. The web interface will involve either the Oracle PL/SQL toolkit, other Oracle products, Java and JDBC, C#, or a scripting language. Prerequisite(s): 12 credits of Computer Science including COS 142 and MAT 151M. Odd spring.



Credit: 4

  COS 477 - Advanced Topics in Computer Science

Each time COS 477 is offered the content will be determined by the needs of the students and the interests of the faculty.  However, the content will deal with the area of databases since this course can satisfy the Computer Science major requirement of COS 455.  It may be repeated for credit with different database topics. Prerequisite(s): 12 credits of Computer Science including COS 142. Varies.



Credit: 4

  COS 497 - Independent Study in Computer Science III

An opportunity to pursue independent study of selected computer science topics under the direction of a faculty member. The course may be repeated for a different topic. Prerequisite(s): 12 credits of Computer Science and permission of instructor. Varies.



Credit: 1-4

See other years' Catalogs