Department of Computer Science
Leadership
Michael Goldwasser, Ph.D.
Department Chair
Kevin Scannell, Ph.D.
Graduate Program Coordinator
The Department of Computer Sciences is committed to the development and study of computing technologies for the greater good of humanity. To this end, we are committed to providing an outstanding education in all aspects of modern computer science, thereby preparing our undergraduate and graduate students for productive careers in the field or for further graduate studies. We are also committed to serving students who major in other disciplines by instilling computational knowledge and skills that are required for success in their chosen fields.
Classes are taught by enthusiastic professors using many hands-on projects and group work, and all of the degree programs provide a rigorous, comprehensive study that adopt national standards and are regularly updated to reflect rapid developments in the field of computing.
Undergraduate
Accelerated
- Bioinformatics and Computational Biology, Bachelor's to M.S. Accelerated Program
- Computer Science, B.A. to Computer Science, M.S. Accelerated Program
- Computer Science, B.A. to Software Engineering, M.S. Accelerated Program
- Computer Science, B.S. to Computer Science, M.S. Accelerated Program
- Computer Science, B.S. to Software Engineering, M.S. Accelerated Program
- Computer Science, Minor to Software Engineering, M.S. Accelerated Program
Graduate
Tae-Hyuk (Ted) Ahn, Ph.D. Erin Chambers. Ph.D. Bryan Clair, Ph.D. Flavio Esposito, Ph.D. David Ferry, Ph.D. Jason Fritts, Ph.D. Michael Goldwasser, Ph.D. Kate Holdener, Ph.D. David Letscher, Ph.D. Kevin Scannell, Ph.D. Jacob Sukhodolsky, Ph.D. Reza Tourani, Ph.D.
CSCI 1010 - Introduction to Computer Science: Principles
Credit(s): 3 Credits
A broad survey of the computer science discipline, focusing on the computer's role in representing, storing, manipulating, organizing and communicating information. Topics include hardware, software, algorithms, operating systems, networks.
CSCI 1020 - Introduction to Computer Science: Bioinformatics
Credit(s): 3 Credits
An introduction to computer programming motivated by the analysis of biological data sets and the modeling of biological systems. Computing concepts to include data representation, control structures, text processing, input and output. Applications to include the representation and analysis of protein and genetic sequences, and the use of available biological data sets.
CSCI 1030 - Introduction to Computer Science: Game Design
Credit(s): 3 Credits
Introduces the design of computer and video games. Students learn the practical aspects of game implementation using computer game engines and 3D graphics tools, while simultaneously studying game concepts like history, genres, storylines, gameplay elements and challenges, and the design process. No computer science background required.
CSCI 1040 - Introduction to Computer Science: Mobile Computing
Credit(s): 3 Credits
An introduction to programming based on the development of apps for mobile devices such as phones and tablets. Students will learn to design an effective user interface, to interact with device hardware and sensors, to store data locally and access Internet resources.
CSCI 1050 - Introduction to Computer Science: Multimedia
Credit(s): 3 Credits
An introduction to computer programming, motivated by the creation and manipulation of images, animations, and audio. Traditional software development concepts, such as data representation and control flow, are introduced for the purpose of image processing, data visualization, and the synthesis and editing of audio.
CSCI 1060 - Introduction to Computer Science: Scientific Programming
Credit(s): 3 Credits
Elementary computer programming concepts with an emphasis on problem solving and applications to scientific and engineering applications. Topics include data acquisition and analysis, simulation and scientific visualization.
Prerequisite(s): (MATH 1510*, MATH 1320, MATH 1520, or MATH 2530)
* Concurrent enrollment allowed.
Attributes: Foreign Language BA Req (A&S)
CSCI 1070 - Introduction to Computer Science: Taming Big Data
Credit(s): 3 Credits
An introduction to data science and machine learning. Fundamentals of data representation and analysis will be covered, with a focus on real-world applications to business intelligence, natural language processing, and social network analysis.
CSCI 1080 - Introduction to Computer Science: Web Development
Credit(s): 3 Credits
The technology of the web, from the structure of the Internet to the design of web-pages. Students will learn Internet standards for encoding information, and create dynamic web pages using the latest technologies. The course introduces fundamentals of computer science, including programming concepts, software engineering principles, file systems, and database interactions.
CSCI 1090 - Introduction to Computer Science: Special Topics
Credit(s): 1-4 Credits (Repeatable for credit)
CSCI 1300 - Introduction to Object-Oriented Programming
Credit(s): 4 Credits
An introduction to computer programming based upon early coverage of object-oriented principles such as classes, methods, inheritance and polymorphism, together with treatment of traditional flow of control structures. Good software development practices will also be established, including issues of design, documentation, and testing.
Prerequisite(s): ((0 Course from CSCI 1010-1090, BME 2000 with a grade of C- or higher, or CVNG 1500 with a grade of C- or higher); (MATH 1200 or 0 Course from MATH 1320-4999))
Attributes: Foreign Language BA Req (A&S)
CSCI 1890 - Object Oriented Practicum
Credit(s): 1 Credit (Repeatable for credit)
Labs and lectures in object-oriented programming to supplement knowledge gained in CSCI 1060 for students wishing to continue on to CSCI 1080, who have not taken CSCI 1300.Offered on an as-needed basis.
Prerequisite(s): CSCI 1060 with a grade of C- or higher
CSCI 1930 - Special Topics
Credit(s): 1-4 Credits (Repeatable for credit)
CSCI 1980 - Independent Study
Credit(s): 1-3 Credits (Repeatable for credit)
CSCI 2050 - Computer Ethics
Credit(s): 3 Credits
This course examines the moral, legal, and social issues raised by computers and electronic information technologies for different stakeholder groups (professionals, users, business, etc.). Students are expected to integrate moral theories and social analysis for addressing such issues as intellectual property, security, privacy, discrimination, globalization, and community.
Prerequisite(s): PHIL 2050
CSCI 2100 - Data Structures
Credit(s): 4 Credits
The design, implementation and use of data structures. Principles of abstraction, encapsulation and modularity to guide in the creation of robust, adaptable, reusable and efficient structures. Specific data types to include stacks, queues, dictionaries, trees and graphs.
Prerequisite(s): (CSCI 1300 with a grade of C- or higher and MATH 1660*)
* Concurrent enrollment allowed.
CSCI 2190 - Computational Problem Solving
Credit(s): 1 Credit
Intended primarily to train students for the International Collegiate Programming Contest (ICPC), this course covers data structures, algorithms, and programming techniques that apply to typical programming challenges.
Prerequisite(s): CSCI 2100
CSCI 2300 - Object-Oriented Software Design
Credit(s): 3 Credits
An implementation-based study of object-oriented software development. Teams will design and create medium-scale applications. Additional focus on the design and use of large object-oriented libraries, as well as social and professional issues.
Prerequisite(s): CSCI 2100 with a grade of C- or higher
CSCI 2400 - Computer Architecture
Credit(s): 3 Credits
Introduction to the organization and architecture of computer systems, including aspects of digital logic, data representation, assembly level organization, memory systems and processor architectures.
CSCI 2930 - Special Topics
Credit(s): 1-4 Credits (Repeatable for credit)
CSCI 2980 - Independent Study
Credit(s): 0-4 Credits (Repeatable for credit)
Prior approval of sponsoring professor and chair required.
CSCI 3100 - Algorithms
Credit(s): 3 Credits
Introduction to analysis and complexity of algorithms. Big-O notation. Running time analysis of algorithms for traversing graphs and trees, searching and sorting. Recursive versus iterative algorithms. Complexity, completeness, computability.
CSCI 3200 - Programming Languages
Credit(s): 3 Credits
Overview of programming languages: procedural and functional languages. Exposure to functional languages. Analysis of solution strategies to variable binding and function calls. Problem solving paradigms and linguistic issues.
Prerequisite(s): (CSCI 2300, CS P 226, or CS A 240)
CSCI 3250 - Compilers
Credit(s): 3 Credits
Introduction to the theory and techniques of compiler design, lexical analysis, finite state automata, context-free grammars, top-down and bottom-up parsing, syntax analysis, code generation. Other important issues such as optimization, type-checking, and garbage collection will be discussed.
CSCI 3300 - Software Engineering
Credit(s): 3 Credits
Theory and practice of software engineering. Design and implementation of software systems. Levels of abstraction as a technique in program design. Organized around major group programming projects.
Prerequisite(s): CSCI 2300
CSCI 3450 - Microprocessors
Credit(s): 3 Credits
Microprocessors/microcomputer structure, input/output. Signals and devices. Computer arithmetic, programming, interfacing and data acquisition.
Prerequisite(s): (CSCI 1060 or CSCI 1300)
Corequisite(s): CSCI 3451
CSCI 3451 - Microprocessor Lab
Credit(s): 1 Credit
Laboratory experiments to emphasize material covered in CSCI 3450.
Corequisite(s): CSCI 3450
CSCI 3500 - Operating Systems
Credit(s): 3 Credits
Theory and practice of operating systems, with emphasis on one of the UNIX family of operating systems. File organization and database systems. Focus on a multi-user system in the client-server model. Hands-on experience.
CSCI 3650 - Network Programming I
Credit(s): 3 Credits
Transmission media; packets, frames, and error-detection; LAN and WAN technologies; routing; Internet architecture and protocols; network performance; host computers; routers; protocol layers; Internet protocol addresses; datagrams; encapsulation; fragmentation; reassembly; Internet Control Message Protocol; network security and legal issues.
Prerequisite(s): CSCI 3500
CSCI 3710 - Databases
Credit(s): 3 Credits
Fundamentals of Database systems: the relational model, file organization and indexes, relational algebra, structured query language, the entity relationship model, normalization, object databases.
Prerequisite(s): CSCI 2100
CSCI 3760 - Artificial Intelligence
Credit(s): 3 Credits
Fundamental introduction to the broad area of artificial intelligence and its applications. Topics include knowledge representation, logic, search spaces, reasoning with uncertainty, and machine learning.
Prerequisite(s): CSCI 2100
CSCI 3820 - Computer Graphics I
Credit(s): 3 Credits
Applications and implementation of computer graphics. Algorithms and mathematics for creating two and three dimensional figures. Animation and two and three dimensional transformations. Interaction, windowing, and perspective techniques. Coding using the graphics library OpenGL.
Prerequisite(s): MATH 2530; (MATH 3110 or MATH 3120); CSCI 2100
CSCI 3910 - Internship with Industry
Credit(s): 0-3 Credits (Repeatable for credit)
Department permission required.
CSCI 3930 - Special Topics
Credit(s): 1-4 Credits (Repeatable for credit)
CSCI 3980 - Independent Study
Credit(s): 1-3 Credits (Repeatable for credit)
Prior approval of sponsoring professor and chairperson required.
CSCI 4130 - Automata
Credit(s): 3 Credits
The theory of automata and finite state machines. Regular languages and automata. Algebraic coding theory and shift registers. Algebraic matching theory.
Prerequisite(s): CSCI 2100
CSCI 4550 - Advanced Operating Systems
Credit(s): 3 Credits
Parallel processes; processor problems; linear address space and tree structured spaces of objects; resource allocation, queuing and network control policies; system balancing and thrashing; job allocation and process scheduling; multiprogramming systems; protection mechanisms for accessing jobs; pipelining and parallelism; distributed systems.
Prerequisite(s): CSCI 3500
CSCI 4650 - Computer Security
Credit(s): 3 Credits
Fundamental introduction to the broad area of computer security. Topics include access control, security policy design, network security, cryptography, ethics, securing systems, and common vulnerabilities in computer systems.
Prerequisite(s): CSCI 2100
CSCI 4750 - Machine Learning
Credit(s): 3 Credits
This course introduces students to the field of machine learning with emphasis on the probabilistic models that dominate contemporary applications. Students will discover how computers can learn from examples and extract salient patterns hidden in large data sets. The course will introduce classification algorithms that predict discrete states for variables as well as regression algorithms that predict continuous values for variables. Attention will be given to both supervised and unsupervised settings in which (respectively) labeled training data is or is not available.
CSCI 4850 - High-Performance Computing
Credit(s): 3 Credits
Use processor features, multiple cores, memory, graphics cards and clusters to maximize efficiency of computer software. Topics include vectorizing code, cache and memory efficiency, multithreaded programming, GPU programming and distributed programming.
Prerequisite(s): CSCI 2100
CSCI 4910 - Internship with Industry
Credit(s): 0-3 Credits (Repeatable for credit)
A work experience with an agency, firm, or organization that employs persons in this degree field. Learning plan and follow-up evaluation required.
CSCI 4915 - Co-op with Industry
Credit(s): 0-3 Credits (Repeatable for credit)
Full-time supervised work experience with an agency, firm, or organization that employs persons in this degree field. Learning plan and follow-up evaluation required.
CSCI 4930 - Special Topics
Credit(s): 1-4 Credits (Repeatable for credit)
CSCI 4961 - Capstone Project I
Credit(s): 2 Credits
The first part of a two-course sequence serving as a concluding achievement for graduating students. In this course, students develop a proposal, collect and formalize specifications, become acquainted with necessary technologies, and create and present a detailed design for completing the project.
Restrictions:
Enrollment limited to students with a semester level of Junior or Senior.
Enrollment is limited to students with a major in Computer Science.
CSCI 4962 - Capstone Project II
Credit(s): 2 Credits
The continuation of CSCI 4961. In the second part of the sequence, students complete their project based upon the design that was developed during the first part of the sequence. Students must demonstrate continued progress throughout the semester and make a preliminary and final presentation of their results.
Restrictions:
Enrollment limited to students with a semester level of Senior.
CSCI 4980 - Advanced Independent Study
Credit(s): 0-6 Credits (Repeatable for credit)
Prior permission of sponsoring professor and chairperson required.
CSCI 5001 - Object-Oriented Programming
Credit(s): 3 Credits
An accelerated introduction to object-oriented computer programming including coverage of classes, methods, inheritance and polymorphism. Good software development practices will also be established, including issues of design, documentation, and testing. Offered in fall.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5002 - Data Structures
Credit(s): 3 Credits
An accelerated study of the design, implementation, and use of data structures. Principles of abstraction, encapsulation, and modularity to guide in the creation of robust, adaptable, reusable and efficient structures. Specific data types to include stacks, queues, dictionaries, trees, and graphs.
Prerequisite(s): CSCI 5001 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5030 - Principles of Software Development
Credit(s): 3 Credits
An overview of software development at a graduate level, including software engineering processes, software design and architecture, testing and quality assurance, and selected other topics of interest to software practitioners. Offered fall and spring.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5050 - Computing and Society
Credit(s): 3 Credits
A study of legal and ethical issues that arise with the use of computing technologies, and how new technologies alter the society that we live in. Offered in fall.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5090 - Computer Science Colloquium
Credit(s): 1 Credit (Repeatable for credit)
A series of presentations, given by faculty members and invited speakers, to provide students with exposure to current research and developments in the field of computer science. Students will be required to produce written summaries of the presentations. Offered fall and spring.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5100 - Algorithms
Credit(s): 3 Credits
An overview of algorithm design and analysis. Topics include analysis of algorithms for traversing graphs and trees, searching and sorting, recursion, dynamic programming, and approximation, as well as the concepts of complexity, completeness, and computability. Offered occasionally.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5150 - Computational Geometry
Credit(s): 3 Credits
The goal of computational geometry is to find efficient algorithms for solving geometric problems. Topics include convex hulls, Voronoi diagrams, Delaunay triangulations, geometric search and geometric data structures. (Offered: As needed/Periodically)
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5200 - Programming Languages
Credit(s): 3 Credits
Overview of programming languages: procedural and functional languages. Exposure to functional languages. Analysis of solution strategies to variable binding and function calls. Problem solving paradigms and linguistic issues. Offered occasionally.
Prerequisite(s): CSCI 5030 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5250 - Compilers
Credit(s): 3 Credits
Theory and practice of compiler design, including lexical analysis, finite state automata, context-free grammars, parsing algorithms, and code generation. Other important issues such as optimization, type-checking, and garbage collection will be discussed. Offered occasionally.
Prerequisite(s): CSCI 5030 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5300 - Software Engineering
Credit(s): 3 Credits
Key aspects of the software engineering discipline, including software process models, software project initiation, software analysis and design, software project planning and management, and software process and product metrics. Offered fall and spring.
Prerequisite(s): CSCI 5030 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5310 - Software Architecture
Credit(s): 3 Credits
The theory and practice of software architecture and global design of software systems, with focus on recurring architectural patterns via in-depth case studies of various large-scale systems.
Prerequisite(s): CSCI 5300 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5320 - Software Project Management
Credit(s): 3 Credits
A study of key components of project management including project integration, project scope management, project time and cost management, quality management, human resource considerations, communications, risk management, and procurement management.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5330 - Software Quality Assurance
Credit(s): 3 Credits
Best practices for the process of quality assurance for complex software systems. Topics include prevention of errors, testing, verification, and validation of software systems, inspection and review processes, and the distinction between process assurance and product assurance.
Prerequisite(s): CSCI 5300 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5350 - Human-Computer Interaction
Credit(s): 3 Credits
An introduction to the field of Human-Computer Interaction, with a particular focus on the design, implementation, and evaluation of software interfaces. Offered occasionally.
Prerequisite(s): CSCI 5030 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5360 - Web Technologies
Credit(s): 3 Credits
An overview of the client-side and server-side technologies that power the modern web. Hands-on experience with interactive web site and web application development for desktop and mobile. Offered occasionally.
Prerequisite(s): CSCI 5030 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5500 - Operating Systems
Credit(s): 3 Credits
Theory and practice of operating systems, with hands-on emphasis on one of the UNIX family of operating systems. Processes, processor scheduling, virtual memory, parallelism and concurrency, race conditions, file systems, networking models, sockets programming, as well as a general focus on operating systems mechanisms and abstractions. Offered occasionally.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5550 - Computer Networks
Credit(s): 3 Credits
A graduate-level introduction to the concepts and principles of computer networks, including the basic technologies of a network and how these systems interact. Focus includes the design and implementation of network software that transforms raw hardware into a richly functional communication system. Offered occasionally.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5650 - Computer Security
Credit(s): 3 Credits
Fundamental introduction to the broad area of computer security. Topics will include access control, security policy design, network security, cryptography, ethics, securing systems, and common vulnerabilities in computer systems. Offered occasionally.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5710 - Databases
Credit(s): 3 Credits
This course introduces the foundations of database systems: the relational model, file organization and indexes, relational algebra, structured query language, the entity model, normalization, object databases. (Offered: As needed/Periodically)
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5750 - Machine Learning
Credit(s): 3 Credits
This course introduces students to the field of machine learning with emphasis on the probabilistic models that dominate contemporary applications. Students will discover how computers can learn from examples and extract salient patterns hidden in large data sets. The course will introduce classification algorithms that predict discrete states for variables as well as regression algorithms that predict continuous values for variables. Attention will be given to both supervised and unsupervised settings in which (respectively) labeled training data is or is not available. Emphasis is placed on both the conceptual relationships between these different learning problems as well as the statistical models and computational methods used to employ those models. (Offered: As needed/Periodically)
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5830 - Image Processing
Credit(s): 3 Credits
This course will introduce the fundamentals of image processing and computer vision, including image models and representation, image analysis methods such as feature extraction (color, texture, edges, shape, skeletons, etc.), image transformations, image segmentation, image understanding, motion and video analysis, and application-specific methods such as medical imaging, facial recognition, and content-based image retrieval. (Offered: As needed/ Periodically)
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5850 - High-Performance Computing
Credit(s): 3 Credits
Use processor features, multiple cores, memory, graphics cards and clusters to maximize efficiency of computer software. Topics include vectorizing code, cache and memory efficiency, multithreaded programming, gpu programming and distributed programming. (Offered: As needed/Periodically)
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5910 - Internship with Industry
Credit(s): 1-3 Credits (Repeatable for credit)
A work experience with an agency, firm, or organization that employs persons in this degree field. Learning plan and follow-up reflection and evaluation are required. Offered fall and spring. Permission of department required.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5930 - Special Topics
Credit(s): 1-3 Credits (Repeatability up to 12 credits)
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5960 - Capstone Project
Credit(s): 3 Credits
A culminating experience in which teams of students complete a full software development life-cycle resulting in the creating of a software system. Offered fall and spring.
Prerequisite(s): CSCI 5300 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5970 - Research Topics
Credit(s): 1-3 Credits (Repeatable for credit)
A research experience in computer science guided by faculty. Permission of instructor required.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.
CSCI 5980 - Graduate Reading Course
Credit(s): 1-3 Credits (Repeatability up to 9 credits)
CSCI 5990 - Thesis Research
Credit(s): 1-6 Credits (Repeatable for credit)
Work towards a Master's thesis.
Restrictions:
Enrollment limited to students in the BICB11, CS11 or SOEN11 programs.