Department of Computer Science

Course Descriptions

 

Undergraduate

Course Fees

In some computer science courses fees are assessed to cover the cost of materials and supplies.

COS 160 Structured Problem Solving: Java
An introduction to the use of digital computers for problem solving, employing the Java programming language as a vehicle. Content includes elementary control structures and data representation methods provided by Java and the object-oriented programming methodology. Course requirements include a substantial number of programming projects. This course must be taken concurrently with COS 170. Prerequisite: grade of C or better in MAT 108 or appropriate placement score. Offerered fall and spring. Cr 3.

COS 161 Algorithms in Programming
The development of algorithms and their implementations in a higher-level programming language, with emphasis on proper design principles and advanced programming concepts. Introduction to the performance analysis of algorithms. Course requirements include a substantial number of programming projects. Prerequisite: grade of C or better in COS 160 or permission of instructor. Offered fall and spring. Cr 4.

COS 170 Structured Programming Laboratory
Computational experiments will be designed to teach students how to construct reliable software using Java. Topics to be covered include: Windows system, conditional program flow, iteration, procedures and functions, and symbolic debugging. This course must be taken concurrently with COS 160. Offered fall and spring. Cr 1.

COS 184 Python Programming
A first introduction to computer programming for solving practical problems, taught in Python, a modern object-oriented, dynamic computer language. The course teaches how to represent aggregates of data, process data selectively and repetitively, structure programs with functions and use predefined libraries with an eye towards acquiring, managing, visualizing and performing basic analysis of sets of data. Students will conduct hands-on programming, both at home and in the lab. Prerequisite: grade of C or better in MAT 108 or permission of instructor. Cr 4.

COS 246 Programming Topics
Topics to be covered may include programming languages not otherwise offered (e.g., Ada, Smalltalk), different programming methodologies (e.g., object-oriented programming), assembly languages, and other specific areas of programming. Prerequisite: grade of C or better in COS 161 or permission of instructor. Cr 3.

COS 250 Computer Organization
The basic hardware, architecture, and software of computer systems are covered. Subjects include digital logic design, microprogramming, machine languages, assembly languages, and operating systems. Prerequisite: grade of C or better in COS 161. This course must be taken concurrently with COS 255. Offered fall. Cr 3.

COS 255 Computer Organization Laboratory
Students design, build, and test combinational and sequential logic circuits and write assembly language programs. This course must be taken concurrently with COS 250. Offered fall. Cr 1.

COS 280 Discrete Mathematics II
Concepts of modern algebra, set theory, Boolean algebra and predicate logic, elements of graph theory, and their application to computer science. This course emphasizes a syntactic approach to proof discovery. Prerequisites: grades of C or better in COS 160 and MAT 145. Offered fall. Cr 4.

COS 285 Data Structures
Basic abstract data types and their representations, fundamental algorithms, and algorithm analysis. Consideration is given to applications. Specific topics include linked structures, trees, searching and sorting, priority queues, graphs, and hashing. Course requirements include a substantial programming component. Prerequisites: grades of C or better in COS 161 and MAT 145 or MAT 152 or their equivalents, or permission of instructor. Offered fall. Cr 4.

COS 350 Systems Programming
A study of systems programming concepts and software, including the C programming language and the Unix programming environment and operating system interface. Students develop their abilities in these areas through programming exercises and projects. Prerequisites: grades of C or better in COS 250 and COS 285. Offered spring. Cr 3.

COS 360 Programming Languages
Principles and techniques of high level programming language specification, including syntax and semantics, and implementation methods. Languages are considered as formal constructs representing computable functions and the course presents basic results of computability theory. Methods of recognition for regular and context free languages, the functional alternative to the state based imperative paradigm, use of parse trees as control constructs, and concurrent programming synchronization primitives are also covered. Prerequisites: grades of C or better in COS 280 and COS 285, or permission of instructor. Offered fall. Cr 3.

COS 368 Graphical User Interface Design
Principles of graphical user interface design are utilized to build working interfaces. The programming language used may vary. Possible languages include Java and C++. Students will work in an object-oriented, event-driven environment. Prerequisite: grade of C or better in COS 285 or permission of instructor. Offered once every two years. Cr 3.

COS 374 Numerical Analysis
A study of the theory and application of computational algorithms for interpolation, equation solving, matrix methods, integration; error analysis. Prerequisites: grades of C or better in COS 160, MAT 252, and MAT 295, or permission of instructor. Offered once every two years. Cr 3.

COS 375 Web Applications Development
This course focuses on development of well-designed web applications. Students will learn how to build rich user interfaces using client-side frameworks, develop web services, and use design patterns in their software applications. Course requirements include a substantial number of programming projects. Prerequisite: grade of C or better in COS 285 or permission of instructor. Cr 4.

COS 389 Programming Autonomous Robots
Introduction to the programming concepts involved with autonomous robotic systems. Using off-the-shelf "robot kits" students will design a simple robotic platform to meet specific goals. Then, using a common platform for the remainder of the course, students will develop their programming capabilities. Simple open-ended, feedback, and artificial intelligence systems will be explored throughout the course. Several benchmarks and robot competitions will be used to demonstrate the platform and programming learned in the course. Prerequisite: grade of C or better in COS 285. Offered once every two years. Cr 3.

COS 398 Professional Ethics and Social Impact of Computing
A study of ethical perspectives and social responsibilities of computer professionals. Assigned readings provide the basis for class discussions of such issues as social control and privacy, computer viruses, ACM code of professional conduct, hacking, limits of correctness in computer software, military influence on computer science research and education. Prerequisite: grade of C or better in COS 161 or permission of instructor. Offered spring. Cr 3.

COS 420 Object-Oriented Design
This course will focus on the construction of object-oriented software. Students will learn conceptual models for organizing objects and object hierarchies, an object-oriented design notation, the application of design patterns, and the use of software development methodologies such as the Agile development process. The capabilities will be used to solve relatively complex problems in a group setting. Prerequisite: grade of C or better in either COS 350 or COS 360 or any COS 400 level course, or permission of instructor. Offered spring. Cr 4.

COS 425 Mobile Development
This course addresses the peculiarities of software development for small, portable devices such as phones or tablets with their distinctive user interfaces and operating systems. Prerequisite: grade of C or better in COS 285. Cr 3.

COS 430 Software Engineering
Study of methods applied to large-scale software development, including topics such as requirements analysis and specification, design, validation and verification, and project management, with emphasis on principles of design. Students use methods on a large programming project. Prerequisite: COS 285 or COS 360. Cr 3.

COS 432 Deep Learning
An introduction to the theory and applications of deep learning. Topics include basic neural networks, convolutional and recurrent networks, and applications in computer vision and language interpretation. Students will learn to design neural network architectures and training procedures via hands-on assignments. Prerequisite: COS 280 or permission of instructor. Cr 4.

COS 444 Software Project Management
This course covers project life cycle, including developing the charter, plans and justification, outsourcing and procurement decisions, scope management, time and cost estimation, quality control, personnel management, risk assessment, and the critical role of communication, both internal and external, to the project. Students will learn to lead and participate in significant software projects. Experienced professionals from industry will visit the class. Prerequisites: junior standing and some programming experience. Offered once every two years. Cr 3.

COS 450 Operating Systems
Bottom up construction of a layered operating system beginning with the hardware interface and ending with the user interface. Specific topics covered include concurrent processes, process management, I/O, virtual memory, file management, resource scheduling, and performance measurement. Students are assumed to be familiar with general machine architecture, functions of system software (compilers, loaders, editors, etc.), data structures, and have some experience with UNIX or other multiprogramming operating system. Prerequisites: grades of C or better in COS 250 and COS 350. Offered once every two years. Cr 3.

COS 452 Computer Graphics
A study of the techniques involved in computer graphics systems. Topics include: point-plotting and line drawing in two- and three-dimensional space; clipping and windowing; geometric modeling; algorithmic solutions to the hidden line and hidden surface problems.  Prerequisite: grade of C or better in COS 285. Offered once every two years. Cr 4.

COS 457 Database Systems
Study of the methods and principles of database management systems (DBMS). Topics addressed include DBMS objectives and architecture, data models, the SQL data definition and data manipulation language, and providing Internet access to databases. The entity-relationship and relational models are emphasized and their use required in a design project. Prerequisites: grades of C or better in COS 280 and COS 285, or permission of instructor. Offered once every two years. Cr 3.

COS 460 Computer Networks
An introduction to computer networks, computer network architecture is described. Other topics include digital data communication, local area networks, wide area networks, internetworks, and the Internet. Specific technologies, including Ethernet and ATM, and protocols, including TCP/IP, will be considered in detail. Prerequisite: grade of C or better in COS 285. Offered once every two years. Cr 3.

COS 465 Distributed Systems
An introduction to the design and operation of distributed systems. Topics include client-server models, interprocess communications, RPC, replication and consistency, online transaction processing, error and fault recovery, encryption and security. Examples will be taken from extant distributed systems. Prerequisites: grades of C or better in COS 450 and COS 460 or their equivalents, or permission of instructor. Cr 3.

COS 469 Compiler Construction
Definition of languages via context-free grammars. Organization of a compiler into phases of lexical analysis, parsing, code generation, and optimization. Students will implement a compiler for a Pascal-like language. Prerequisite: grade of C or better in COS 360. Offered once every two years. Cr 3.

COS 470 Topics in Computer Science
Topics to be covered may include philosophy of computers, history of computers, computers and society, simulation, graphics, and other advanced topics. Prerequisite: grade of C or better in COS 285 or permission of instructor. Cr 3.

COS 472 Artificial Intelligence and Data Mining
An introduction to the underlying concepts and applications of intelligent systems. Topics include heuristic search techniques, pattern matching, rule-based systems, computer representations of knowledge, and machine learning and data mining techniques. Course work includes regular labs and large projects. Students will learn to conduct research in artificial intelligence and will complete a modest research project. Prerequisite: grade of C or better in COS 285 or permission of instructor. Offered once every two years. Cr 3.

COS 475 Machine Learning
The basic theory, algorithms, and applications of Machine Learning are covered in this course. Students will develop an understanding of learning theory, supervised and unsupervised learning algorithms, and reinforcement learning techniques. The course will also explore recent practical applications of machine learning. Prerequisites: grades of C or better in COS 285 and MAT 295, or permission of instructor. Cr 4.

COS 485 Design and Analysis of Computing Algorithms
An introduction to the design and analysis of algorithms. Techniques for designing algorithms, such as divide-and-conquer, greedy method, dynamic programming, and backtracking are emphasized and illustrated. Many problems of practical importance are covered including: minimum spanning tree, single source shortest path, traveling salesperson, and graph search. The concepts of NP-completeness are also considered. Substantial programming in a high-level language. Prerequisite: grade of C or better in COS 285. Offered spring. Cr 3.

COS 497 Independent Study in Computer Science
An opportunity for juniors and seniors who have demonstrated critical and analytical capability to pursue a project independently, charting a course and exploring an area of interest within their major field. At most, three credits of COS 497 can be used to satisfy degree requirements. Prerequisites: junior or senior standing and permission of the Department chair and instructor. Cr 1-3.

COS 498 Computer Science Internship
An opportunity for students to gain practical experience in computer science-related employment. The University's internship program provides placement. This course is offered on a pass/fail basis only, does not fulfill any computer science requirement, and a maximum of 6 credits may be taken. Cr 3.

Graduate

Graduate level computer science courses are generally restricted to graduate students who have successfully gone through an admissions procedure, but other students may take them by permission from the instructor.

COS 532 Deep Learning
An introduction to the theory and applications of deep learning. Topics include basic neural networks, convolutional and recurrent networks, and applications in computer vision and language interpretation. Students will learn to design neural network architectures and training procedures via hands-on assignments. Prerequisite: graduate standing. Cr 4.

COS 540 Computer Networks
An introduction to computer networks, computer network architecture is described. Other topics include digital data communication, local area networks, wide area networks, internetworks, and the Internet. Specific technologies, including Ethernet and ATM, and protocols, including TCP/IP, will be considered in detail. Prerequisite: graduate standing. Cr 3.

COS 542 Distributed Systems
An introduction to the design and operation of distributed systems. Topics include client-server models, interprocess communications, RPC, replication and consistency, online transaction processing, error and fault recovery, encryption, and security. Examples will be taken from extant distributed systems. Students will design and implement a distributed system. Prerequisites: COS 450 and COS 460 or their equivalents, or permission of instructor. Cr 3.

COS 544 Software Project Management
The course covers project life cycle, including developing the charter, plans and justification, outsourcing and procurement decisions, scope management, time and cost estimation, quality control, personnel management, risk assessment, and the critical role of communication, both internal and external, to the project. Students will learn to lead and participate in significant software projects. Experienced professionals from industry will visit the class. Prerequisite: graduate standing. Cr 3.

COS 550 Operating Systems
Topics include concurrent processes, process management, I/O, virtual memory, file management, resource scheduling and performance measurement. Prerequisite: graduate standing. Cr 3.

COS 558 Database Systems
Study of the methods and principles of database management systems (DBMS). Topics addressed include DBMS objectives and architecture, data models, data definition and manipulation languages (in particular, SQL) and providing internet access to databases. The entity-relationship and relational models are emphasized and their use required in a design project. Prerequisite: graduate standing. Cr 3.

COS 569 Compiler Construction
Definition of languages via context-free grammars. Organization of a compiler into phases of lexical analysis, parsing, code generation, and optimization. Students will implement a compiler for a Pascal-like language. Prerequisite: graduate standing. Cr 3.

COS 570 Seminar: Advanced Topics in Computer Science
Topics vary from year to year and will include current research, emerging technologies, and case studies. Cr 3.

COS 572 Artificial Intelligence and Data Mining
An introduction to the underlying concepts and applications of intelligent systems. Topics include heuristic search techniques, pattern matching, rule-based systems, computer representations of knowledge, and machine learning and data mining techniques. Course work includes regular labs and large projects. Students will learn to conduct research in artificial intelligence and will complete a modest research project. Cr 3.

COS 575 Machine Learning
The basic theory, algorithms, and applications of Machine Learning are covered in this course. Students will develop an understanding of learning theory, supervised and unsupervised learning algorithms, and reinforcement learning techniques. The course will also explore recent practical applications of machine learning. Prerequisites: COS 285 and MAT 295 or their equivalents, or permission of instructor. Cr 4.

COS 576 Advanced Object-Oriented Design
This course considers developing object-oriented, multi-tier, Web-based applications. Topics will include object-oriented design patterns in distributed environments, software components, and software frameworks. The course has a significant hands-on implementation component, and, after completing the course, students will have practical experience with several leading-edge distributed object technologies, including AJAX, Web Services, Enterprise JavaBeans, JDBC, and Servlets. Students will work in teams to develop a medium-sized, multi-tier application that incorporates several of the technologies mentioned above. Lectures will provide an introduction to the technologies and discuss principled ways to apply these technologies. Prerequisite: COS 420 or equivalent, or permission of instructor. Cr 4.

COS 582 Design and Analysis of Computing Algorithms
Techniques for designing algorithms, such as divide-and-conquer, greedy method, dynamic programming, and backtracking are emphasized and illustrated. Many problems of practical importance are covered, including minimum spanning tree, single source shortest path, traveling salesperson, and graph search. The concepts of NP-completeness are also considered. Prerequisite: graduate standing. Cr 3.

COS 598 Internship
Students apply their learning to a specific problem in a practical context under faculty and managerial supervision. See Departmental guidelines for more details. Prerequisites: graduate standing and prior approval of proposal by the Department chair and instructor. Cr 1-3.

COS 696 Master's Project
A 3-credit project that is one of two options for completing the Master's degree requirements. The project must be supervised by a committee and the project proposal approved in advance. Offered only as a pass/fail course. Prerequisites: graduate standing and faculty approval. Cr 3.

COS 697 Independent Study
An opportunity for graduate students to pursue areas not currently offered in the graduate curriculum. Cr 1-4.

COS 698 Master's Thesis
A 6-credit thesis that is one of two options for completing the Master's degree requirements. The thesis project must be supervised by a committee and the project proposal approved in advance. Offered only as a pass/fail course. Prerequisites: graduate standing and faculty approval. Cr 6.