Courses

COMP 151. Introduction to Programming 1.0 course credit

Introduction to Programming teaches basic programming skills that are applicable to a variety of disciplines and also acts as a bridge to continued studies in Computer Science. Students will work with the Python programming language in order to solve basic problems involving digital media: text, images, and sound. By the end of the course students will be able to read and develop computer programs utilizing the following programming concepts: basic data types and encoding, variables and scope, array and list data structures, if statements and conditional execution, loops and iteration, functions, and object types.

COMP 152. Data Structures and Algorithms 1.0 course credit

A continuation of COMP 151 that explores the essential data structures and algorithms of modern computing, including lists, stacks, queues, heaps, and trees. Student will design, analyze, and build Python programs that implement and utilize these data structures to solve computational problems, including a thorough survey of sorting and search algorithms. These theoretical constructs are complemented by exposure to good software development practices, including data abstraction via abstract data types and object-oriented software design. Strong emphasis Is put on analyzing and evaluating how implementation choices made by the programmer impact overall program performance and maintainability. Prerequisite: COMP 151.

COMP 235. Introduction to Systems Programming 1.0 course credit

An introduction to low-level programming and computer hardware organization from a software perspective emphasizing how application programmers can use knowledge of the entire system to write better programs. Introduces C and assembly language. Core topics include data representation, machine language, the memory hierarchy, and virtual memory. Further potential topics include processor architecture, code optimization, and concurrency. Prerequisite: COMP 152. Offered in the fall semester.

COMP 240. Computer Applications 1.0 course credit

In Computer Applications students will work in small groups to develop three different computer applications. Each application will expose them to a different computing platform along with the tools and computing concepts used in developing programs for that platform. The platform and purpose of each application will vary from year to year and instructor to instructor, but common choices of platforms include: the command line interface, the web, mobile devices, and high-performance computing. Students will maintain and develop their projects using GitHub or GitLab and Git version control software. Students will also engage in peer-review of the work of their team members and the other development teams in the course. Upon completing the course students will know how to apply basic software engineering practices in a small group setting, how to maintain software through the Git version control system, and have experience with tools and best-practices for developing modern software applications for three different computing platforms. Prerequisite: COMP152. Offered in the spring semester.

COMP 310. Database Theory and Design 1.0 course credit

An introduction to the concepts and techniques of database systems. Includes history and motivation of database systems, data modeling, rational database, SQL, transaction processing, distributed databases. Prerequisites: COMP 220 and MATH 260. Offered in alternate years.

COMP 325. Organization of Programming Languages 1.0 course credit

A study of the necessary components of programming languages and of how computers implement programs. Prerequisite: COMP 220. Offered in alternate years.

COMP 335. Software Engineering 1.0 course credit

A look at the field of software engineering and the theories and practices it uses. Topics include system logic, design, modeling and the software process. Students will put software engineering practices to use on a group software project. Prerequisites: COMP 210 and 220. Offered in alternate years.

COMP 337. Computer Communications and Networking 1.0 course credit

This course introduces the fundamentals of computer networks. It focuses on the communication protocols used in computer networks, their functionality, specification, verification, implementation, and performance. The course also considers the use of network architectures and protocol hierarchies to provide more complex services. Existing protocols and architectures will be used as the basis of discussion and study. Prerequisite: COMP 220. Offered in alternate years.

COMP 340. Analysis of Algorithms 1.0 course credit

A study of the design and analysis of computer algorithms. Topics include asymptotic analysis, efficient algorithm design, sorting and order statistics, hashing, binary search trees, graph algorithms, matrix multiplication, and NP completeness. This course begins a more in-depth study in the theory and science of computation. Prerequisites: COMP 220 and MATH 260. Offered in alternate years.

COMP 343. Artificial Intelligence 1.0 course credit

An introduction to the fundamental issues and problems of computational artificial intelligence with a history of the field and discussion of the social, moral and ethical issues involved in attempting to create intelligent machines. Topics include search-based problem solving, knowledge representation and reasoning, machine learning and uncertainty. Prerequisites: COMP 220 and MATH 260. Offered in alternate years.

COMP 345. Operating Systems 1.0 course credit

Topics include dynamic procedure activation, system structure, memory management, process management, and recovery procedures. Prerequisites: COMP 220 and 230. Offered in alternate years.

COMP 347. Applied Machine Learning 1.0 course credit

A hands-on Introduction to computational approaches for learning from data. The course focuses on applying machine learning methods to real world data and the issues that come with it, including data cleaning and preparation and model selection and evaluation. Topics Include linear models for supervised learning, preprocessing, feature selection, ensembles, clustering, and neural networks. Prerequisite: COMP 152. Offered in alternate years.

COMP 350. Topics in Computer Science 1.0 course credit

Possible topics include theoretical computer science, computer/network security, cryptography, graphics, and general topics within Computer Science not covered in the standard catalog. May be repeated for credit with different topics. Offered annually. Topics determined based on current events and current student interests. Prerequisites vary according to the topic studied. Offered in alternate years.

COMP 401. Senior Project: Research 0.5 course credit

COMP 401 is the first of two courses that make up the capstone experience in Computer Science. This course focuses on researching and developing a concrete proposal for an independent or small group project to be implemented in COMP 402 the following semester. Prerequisite: COMP 220 and senior status. Offered every semester.

COMP 402. Senior Project: Implementation 0.5 course credit

COMP 402 is the second of two courses that make up the capstone experience in
Computer Science. This course focuses on the implementation of the research and development proposal completed during the previous semester’s section of COMP 401. Prerequisite: COMP 401. Offered every semester.

COMP 410. Research in Computer Science 0.5 or 1.0 course credit

An individual or group project in computer science chosen by the student(s) in consultation with the computer science faculty. This course may count toward the computer science major at the discretion of the department.

COMP 420. Independent Study 0.5 or 1.0 course credit

An individual project in computer science undertaken by the student with the guidance of the faculty. Prerequisite: Permission of the instructor. This course may count toward the computer science major at the discretion of the department.

COMP 450. Internship in Computer Science 0.5 or 1.0 course credit

An experience designed to allow students in the computer science field to apply the concepts and ideas developed during their study in the major. This course can be taken on a credit or no-credit basis only. Prerequisite: Prior approval of the department. This course may count toward the computer science major at the discretion of the department.