Bachelor of Arts Degree in Computer Science Courses Transferrable from Other UMS Campuses to the University of Maine at Farmington The following chart provides general guidance as to which courses offered at other University of Maine System campuses will be accepted as transferable into the Bachelor of Arts in Computer Science undergraduate degree program at the University of Maine at Farmington. As shown, links to course descriptions for all courses are provided. Additional courses beyond those listed may be acceptable for transfer as assessed by the appropriate course faculty on the campus to which the student is transferring. Courses qualifying to fulfill General Education course requirements are handled on a campuswide basis and are available through a separate information sheet. University of Maine at Farmington Bachelor of Arts: Computer Science (Curriculum drawn from http://catalog.umf.maine.edu/show.php?type=program&id=6) Typical Program showing Acceptable Transfer Courses (Course transfer information is drawn from https://peportal.maine.edu and confirmed by involved faculty members.) REQUIRED COURSES Course Course Title Number Intro to Computer Science COS 140 Credits: 4 Course Description Data Structures COS 142 Credits: 4 Course Description Networking TCP/IP COS 280 Credits: 4 Course Description Computer Graphics COS 355 Credits: 4 Course Description Alg Design & Analysis COS 364 Credits: 4 Course Description Prog Lang Concepts COS 360 Credits: 4 Course Description Comp Oper Systems COS 372 Credits: 4 Course Description Database Systems COS 455 Credits: 4 Course Description Internet Computing COS 120 Credits: 4 ELECTIVE Course Description USM COURSES ACCEPTABLE FOR TRANSFER UM UM-A UM-FK UM-M COS 161 COS 225 CIS 210 COS 285 COS 226 CIS 354 COS 460 COS 441 CIS 341 COS 452 COS 460 COS 485 COS 360 COS 301 COS 450 COS 431 COS 457 COS 480 COS 492 CISA 210 CISA 210 UM-PI Computer Organization COS 241 ELECTIVE Credits: 4 COS 335 Course Description Fund of Theory Comp COS 341 ELECTIVE Credits: 4 Course Description Int Topics in Computer COS 377 ELECTIVE Science Course Description Credits: 2 – 4 Adv Topics in Computer COS 477 ELECTIVE Science Course Description Credits: 2 – 4 Ind Study in Computer COS 497 ELECTIVE Science II (varies) Course Description MAT 141M Credits: 2 – 4 Calculus I Credits: 4 MAT 152 and MAT 152D Foundations of Abstract Mathematics Credits: 4 MAT 290 MAT 126 MAT 125 MATO 126 MATP 152D Course Description MAT 151M Course Description MAT 220 Course Description MAT 255 MATA 125 MATO 126 MATP 152D MAT 126 MATA125 MATP 152D MAT 131 MATA 125 MATO 126 MATP 152D MAT 251 Data Analysis Credits: 4 MAT 142 Calculus II ELECTIVE Credits: 4 MAT 153 MAT 127 MAT 126 MATO 127 MATP 153 MAT 256 MATO 127 MATO 200 MATP 153 MAT 295 MAT 262 MAT 262 MAT 280 Course Description MAT 127 MATO 127 MATP 153 MATO 127 MATP 153 MAT 132 MAT 242 Differential Equations ELECTIVE Credits: 4 Course Description MAT 251 Linear Algebra ELECTIVE Credits: 4 Course Description MAT 333 Graph Theory and ELECTIVE Combinations Course Description Credits: 4 MAT 367 Intermediate Stats ELECTIVE Credits: 4 Course Description MAT 371 Mathematical Probability ELECTIVE Credits: 4 Course Description MAT 274 Note: Four COS electives (at least three must be numbered above 300) and one MAT elective should be chosen from the list above. Students are advised that an equivalent COS 377 can be taken for COS 372; an equivalent COS 377 can be taken for COS 455. University of Maine at Farmington Computer Science Course Descriptions 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 userdefined 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 and either MAT 141M or MAT 151M. Every spring. Credit: 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 Iptables, and use of a packet analyzer to better understand the protocols and diagnose problems. Prerequisites: COS 142. Every spring. Credit: 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. Every 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, and COS 280. Every year. Credit: 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. Every spring. Credit: 4 COS 120 - Internet Computing 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 two years. 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. Every fall. Credit: 4 COS 341 - Fund of Theory Comp 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 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 MAT 141M - Calculus I Introduction to the basic concepts of limit, differentiation, and integration; study of their applications to problems in rates of change, extrema, and area between curves. Includes both rational and transcendental functions. Every semester. Credit: 4 MAT 151M - Foundations of Abstract Mathematics This course considers the basic objects of mathematics and the methods used to elucidate their properties. Predicate logic and the theory of sets, relations, functions and the natural numbers will be discussed. The student will learn about proving properties of these objects. Prerequisite(s): Three years of high school mathematics (two years of Algebra and one of Geometry.) Letter grade. Every semester. Credit: 4 MAT 220M - Data Analysis This course is intended for those majoring in mathematics, secondary mathematics education, or computer science. The course is designed to contain the content of AP statistics, but at the deeper level required for pre-service teachers. Topics covered include descriptive statistics, regression and correlation, sampling and experimentation, basic probability, normal distributions, sampling distributions, point estimation, confidence intervals, hypothesis testing for means and proportions, two-sample t-tests for means, chisquared tests, and possible other topics. Appropriate technology will be used. Prerequisite(s): MAT 141M or permission of instructor. Every fall. Credit: 4 MAT 142 - Calculus II Continuation of the investigation of differentiation and integration begun in MAT 141M, examining techniques of integration, indeterminate forms, and infinite series including Taylor series. Applications studied will include volumes of solids of revolution and work. Prerequisite(s): MAT 141M with a grade of C- or better. Every spring. Credit: 4 MAT 242 - Differential Equations An introduction to Ordinary Differential Equations focusing on first order equations, linear equations of higher order, systems of differential equations, and basic numerical methods. Other topics will be considered as time permits. Prerequisite(s): MAT 142. Even spring. Credit: 4 MAT 251 - Linear Algebra Introduction to linear algebra and its applications. Topics may include matrix operations, systems of linear equations, determinants, vector spaces, linear transformations, orthogonality, eigenvalues, Markov processes, linear programming and the use of mathematical software in modeling and problem solving. Prerequisite(s): Two years of high school algebra or permission of instructor. Every spring. Credit: 4 MAT 333 - Graph Theory and Combinatorics The two areas of Mathematics considered in this course highlight the interplay between different parts of Mathematics. The elementary and sophisticated counting methods of Combinatorics elucidate properties of Graphs while the Theory of Graphs stimulates and provides insights into counting methods. Applications to the understanding of problems are an integral part of the course. Prerequisite(s): MAT 151M. Odd spring. Credit: 4 MAT 367 - Intermediate Statistics The focus of this course is determining and conducting the appropriate analysis for different types of data and various applications. Topics covered include experimental design, power, confidence intervals and hypothesis testing for two populations, contingency tables, one-way and two-way ANOVA, multiple regression, logistic regression, and non-parametric statistics. A statistical computer package will be used. Prerequisite(s): MAT 120M or MAT 220M. Odd spring. Credit: 4 MAT 371 - Mathematical Probability An introduction to Probability using the tools learned in courses through Calculus. Combinatorial and integral methods will be used to calculate probabilities and expectations of functions of random variables. There will be discussion of Discrete and Continuous Probability Distributions including Binomial, Poisson, Normal, Gamma and Multivariate Distributions. Prerequisite(s): MAT 142. Every fall. Credit: 4