Course Descriptions
120 Fundamentals of Computer Science I
Problem solving and algorithm design; basic programming concepts including subprograms and objects. Programming in a modern object-oriented language and an introduction to the UNIX operating system are an integral part of the course. (1 credit)
Lecture: 3 hrs/wk.
Prerequisites: No formal prerequisite; however, a strong aptitude for math usually predicts success in the course.
150 Scientific Computing
This course is designed to introduce students to fundamental concepts, methods, and tools of scientific computing. The course begins with an introduction to the Python programming language in the context of solving scientific computing problems from a variety of disciplines, including physics, chemistry, biology, and mathematics. The course concludes with a series of guest lectures by experts in scientific computing in various disciplines where students can apply their programming and problem-solving skills.
Lecture: 3 hrs/wk.
170 Fundamentals of Computer Science II
Programming design and implementation including inheritance, polymorphism, abstraction, recursion, searching, and sorting. (1 credit)
Lecture: 3 hrs/wk.; Laboratory: 3 hrs/wk.
Prerequisite: Computer Science 120 or 150.
250 Data Structures and Algorithms
The design, implementation, and analysis of data structures and the algorithms associated with them. (1 credit)
Lecture: 3 hrs/wk.; Laboratory: 3 hrs/wk.
Prerequisite: Computer Science 170.
270 Software Engineering and Project Design
Introduction to the principles of software engineering, software process models, requirements engineering, designing methodology and metrics, and testing and quality assurance. Students will apply these principles to the design and implementation of a large software project. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 250.
310 Topics in Applied Computing
A course offered in various formats, designed to give students instruction and hands-on experience in an area of applied computing. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 170.
342 Numerical Analysis
Numerical integration and numerical solution of differential equations, numerical methods in linear algebra, matrix inversion, estimation of characteristic roots, error propagation and stability. (1 credit)
Lecture: 3 hrs/wk.
Prerequisites: Mathematics 201, 122, Computer Science 120.
(Cross-listed as Mathematics 342).
350 Databases and Web Programming
Study of Relational Database Systems, Structured Query Language, designing databases, and web programming using HTML, CSS, and JavaScript on the front end and PHP, using a database, on the back end. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 170 and Mathematics 131.
361 Systems Administration
This course introduces students to computer hardware, installation and maintenance of operation systems on stand-alone computers, and various systems administration tasks including creating and maintaining user accounts, managing user privileges, learning about scripting languages and writing scripts to automate tasks, and managing computer resources. The course also introduces students to system administration of computers in a networked environment. Students will learn about configuring and managing various network services including network file systems and network information systems. Students will also learn about network security and creating secure networks by creating software firewalls. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 170
362 Video Game Development
This course focuses on the techniques and technologies of creating real-time interactive 3D video games. Students will build a game engine and a game that uses the engine. Topics include 3D transformations, materials, animation, collision detection, and character animation. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 250
363 Robotics
This course focuses on the design and development of embedded systems for robotics. Students will use a microcontroller to create a mobile, sensing robot. Topics include electronics, circuits, embedded systems, 3D printing, physical computing, and real-time computing. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 250
370 Data Mining
This course introduces students to the study of various machine learning algorithms. It covers the preparation of data sets for use with machine learning algorithms for mining information. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 170
405,406,407 Independent Study and Research
Selected topics in computer science carried out under the direction of a member of the computer science staff. (Enrollment with the approval of the Chair of the Department.) (1/2 credit, 1 credit, 1/2 credit)
416 Internship
Field placement providing practical experience and training in areas in which computer science is applied. These areas may include industry, government agencies, educational institutions, insurance companies and a variety of private enterprises. (1 credit)
Prerequisite: Permission of the department.
450 Theory of Computation
Study of formal models of computation. Topics include regular, context-free, context-sensitive, and unrestricted grammars; Church's thesis; computability and undecidability. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 250 and Mathematics 131.
461 Architecture and Operating Systems
Machine language and assembly language concepts, data paths, parallel system architecture; system calls, process synchronization and scheduling, input and output subsystems, memory management, file systems. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 250.
462 Analysis of Algorithms
Introduction to the analysis of algorithms. Students will revisit various algorithm design techniques, learn methods to analyze the computational complexity of the resulting algorithms, and study complexity classes to differentiate between tractable and intractable problems. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 250 and Mathematics 131.
463 Principles of Programming Languages
Fundamentals in the design and implementation of programming languages. Topics include BNF, compilation and interpretation, data types, control structures, runtime systems, data abstraction, exception handling and concurrency. Language paradigms include functional, logic, and object-oriented approaches. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 270.
464 Networks
An experiential study of the fundamentals of networking, networked applications, network security, and the use of software tools in troubleshooting networks. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite: Computer Science 250.
470 Senior Project
The senior project course is the culmination of the computer science major. It presents students with the opportunity to put into practice the knowledge and skills they have developed throughout their education. In the course, students will work in teams to specify, design, implement, and test a significant software project using appropriate techniques and tools. (1 credit)
Lecture: 3 hrs/wk.
Prerequisite or corequisite: Computer Science 350 and 370.
495, 496, 497 Honors Project
A program of independent study culminating in a paper, artistic creation, or performance.
Prerequisite: To qualify for consideration to receive honors in the major, a student in his/her senior year or in the summer prior to the senior year, must work under the guidance of his/her committee. A written proposal and application must be approved by the committee and department. A minimum GPA of 3.4 in the major is required. 495 Honors Project is prerequisite for 497 Honors Project. (1/2 credit, 1 credit, 1/2 credit)