Computer Science bachelor of science degree
Computer Science
Bachelor of science degree
Breadcrumb
 RIT /
 Rochester Institute of Technology /
 Academics /
 Computer Science BS
Overview
Specialize in areas such as artificial intelligence, computer graphics, computer theory, networking, security, robotics, parallel computation, data mining, computer architecture, or systems software.
The computer science major attracts students who are interested in both the mathematical theory and technical applications of computer science. Most employers look for students who are good computer scientists but also understand the tools and techniques of mathematics, science, and industry, and are able to communicate effectively. The major is for the mathematically adept student who wishes to become a computing professional with knowledge of relevant applications areas. The program also attracts students transferring to RIT with an associate degree in computer science with course work in mathematics and science.
Computer science covers a wide spectrum of areas within the field of computing, ranging from the theoretical to the practical. A computer scientist can specialize in areas such as intelligent systems (i.e., artificial intelligence), computer graphics, computer theory, data management, distributed and parallel computing, systems software, or computer security. Programming is necessary, but computer scientists also must be adaptable as well as adept at problem solving and analytical reasoning, able to understand design principles, and fluent in using computers.
Students take a core of computer science courses that provide a solid foundation for advanced work. Building on this base, students explore a variety of specializations in their third, fourth, and fifth years. In addition, students develop a broad appreciation for computer applications and the affect of computers on society via program electives, general education courses, and various free electives, which can be used to complete a minor.
Experiential education
The demands of industry and government require college graduates to master both the fundamentals and the applied aspects of their profession. To meet this requirement, two applied educational experiences are woven into the major. First, students are required to complete a minimum of three blocks of cooperative education. Coop is fulltime, paid professional experience where students work for a company or organization applying what they have earned in the classroom to realworld situations. Second. students engage in an extensive set of laboratory and smallgroup experiences, many as members of a team. These activities are typically held in a setting involving 15 to 20 students each, providing a venue for significant studentfaculty interaction.
Accreditation
The BS degree in computer science is accredited by the Computing Accreditation Commission of ABET, http://www.abet.org.
Industries

Aerospace 
Insurance 
Government (Local, State, Federal) 
Internet and Software 
Defense 
Electronic and Computer Hardware 
Manufacturing
Typical Job Titles
Computer Scientist  Software Engineer 
Technical Specialist  Software Developer 
Computer Programmer  Systems Analyst 
Network Architect  Web Developer 
Software Tester  Software Quality Assurance Specialist 
Latest News

April 1, 2019
RIT’s College of Liberal Arts honors students for writing excellence
RIT’s College of Liberal Arts honored student achievement in writing on Friday with the presentation of more than a dozen writing awards for essays varying from sanctuary cities, how democracies can withstand outside meddling, and the excavation, preservation and reconstruction of a London theater where Shakespearian plays debuted.

April 1, 2019
RIT Venture Fund helps turn ideas into businesses
Launched in 2012, the RIT Venture Fund invests in earlystage, highgrowth companies founded by students, faculty, staff, alumni and RIT Venture Creations client companies in fields that complement RIT’s core academic competencies. From block chain and cleanenergy technology to telecommunications, manufacturing and game development, the Venture Fund looks to create industry diversity and a vibrant entrepreneurial ecosystem.

February 8, 2019
Students have 24 hours to ‘create’ at BrickHack
College students from across the continent are saving some brain power for the weekend of Feb. 1617, where they will have 24 hours to create projects at RIT’s annual BrickHack event.
Curriculum
Computer science, BS degree, typical course sequence
Course  Sem. Cr. Hrs.  

First Year  
ACSC010 
Year One
The Year One class serves as an interdisciplinary catalyst for firstyear students to access campus resources, services and opportunities that promote selfknowledge, personal success, leadership development, social responsibility and life academic skills awareness and application. Year One is also designed to challenge and encourage firstyear students to get to know one another, build relationships and help them become an integral part of the campus community.

0 
CSCI141 
Computer Science I
This course serves as an introduction to computational thinking using a problemcentered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments (both in class and for homework) requiring a pseudo code solution and an implementation are an integral part of the course. An endofterm project is also required.

4 
MATH181 
LAS Perspective 7A (mathematical): Projectbased Calculus I
This is the first in a twocourse sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers functions, limits, continuity, the derivative, rules of differentiation, applications of the derivative, Riemann sums, definite integrals, and indefinite integrals.

4 
MATH182 
LAS Perspective 7B (mathematical): Projectbased Calculus II
This is the second in a twocourse sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers techniques of integration including integration by parts, partial fractions, improper integrals, applications of integration, representing functions by infinite series, convergence and divergence of series, parametric curves, and polar coordinates.

4 
CSCI142 
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an objectoriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, objectoriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of objectoriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary objectoriented design patterns. Input and output streams, graphical user interfaces, and exception handling are covered. Students will also be introduced to a modern integrated software development environment (IDE). Programming projects will be required.

4 
MATH190 
Discrete Mathematics for Computing
This course introduces students to ideas and techniques from discrete mathematics that are widely used in Computer Science. Students will learn about the fundamentals of propositional and predicate calculus, set theory, relations, recursive structures and counting. This course will help increase students’ mathematical sophistication and their ability to handle abstract problems.

3 
First Year LAS Elective

3  
LAS Perspective 2 (artistic)

3  
LAS Perspective 3 (global)

3  
LAS Perspective 4 (social)

3  
First Year Writing

3  
Wellness Education*

0  
LAS Perspective 1 (ethical)


Second Year  
CSCI243 
The Mechanics of Programming
Students will be introduced to the details of program structure and the mechanics of execution as well as supportive operating system features. Security and performance issues in program design will be discussed. The program translation process will be examined. Programming assignments will be required.

3 
Choose one of the following: 
3


CSCI261 
Analysis of Algorithms
This course provides an introduction to the design and analysis of algorithms. It covers a variety of classical algorithms and data structures and their complexity and will equip students with the intellectual tools to design, analyze, implement, and evaluate their own algorithms.


CSCI264 
Honors Analysis of Algorithms
This course provides a challenging introduction to the design and analysis of algorithms with an emphasis on problem solving and algorithmic research. It covers a variety of classical algorithms and data structures and their complexity, as well as deeper coverage of more advanced material; for example, linear programming, approximation algorithms, and randomized algorithms. The course will equip students with the intellectual tools to design, analyze, implement, and evaluate their own algorithms.


Choose one of the following: 
3


CSCI262 
Introduction to Computer Science Theory
This course provides an introduction to the theory of computation, including formal languages, grammars, automata theory, computability, and complexity.


CSCI263 
Honors Introduction to Computer Science Theory
This course provides a challenging introduction to the theory of computation with an emphasis on problem solving. Topics include formal languages, grammars, automata theory, computability, and complexity.


MATH251 
Probability and Statistics I
This course introduces sample spaces and events, axioms of probability, counting techniques, conditional probability and independence, distributions of discrete and continuous random variables, joint distributions (discrete and continuous), the central limit theorem, descriptive statistics, interval estimation, and applications of probability and statistics to realworld problems. A statistical package such as Minitab or R is used for data analysis and statistical applications.

3 
CSCI250 
Concepts of Computer Systems
An introduction to the hardware and software organization of computer systems. The course emphasizes a multilevel model of computer organization. Topics include the digital logic level; the micro architecture level; the machine instruction set level; the operating system level; and the assembly language level. Programming assignments will be required.

3 
SWEN261 
Introduction to Software Engineering
An introductory course in software engineering, emphasizing the organizational aspects of software development and software design and implementation by individuals and small teams within a process/product framework. Topics include the software lifecycle, software design, user interface issues, specification and implementation of components, assessing design quality, design reviews and code inspections, software testing, basic support tools, technical communications and system documentation, teambased development. A termlong, teambased project done in a studio format is used to reinforce concepts presented in class.

3 
MATH241 
Linear Algebra
This course is an introduction to the basic concepts of linear algebra, and techniques of matrix manipulation. Topics include linear transformations, Gaussian elimination, matrix arithmetic, determinants, vector spaces, linear independence, basis, null space, row space, and column space of a matrix, eigenvalues, eigenvectors, change of basis, similarity and diagonalization. Various applications are studied throughout the course.

3 
LAS Perspective 5‡ (natural science inquiry)

4  
LAS Perspective 6‡ (scientific principles)

3  
LAS Elective‡

4  
Cooperative Education (summer)

Coop  
Third Year  
CSCI250 
Concepts of Computer Systems
An introduction to the hardware and software organization of computer systems. The course emphasizes a multilevel model of computer organization. Topics include the digital logic level; the micro architecture level; the machine instruction set level; the operating system level; and the assembly language level. Programming assignments will be required.

3 
CSCI251 
Concepts of Parallel and Distributed Systems
This course is an introduction to the organization and programming of systems comprising multiple computers. Topics include the organization of multicore computers, parallel computer clusters, computing grids, clientserver systems, and peertopeer systems; computer networks and network protocols; network security; multithreaded programming; and network programming. Programming projects will be required.

3 
CSCI320 
Principles of Data Management
This course provides a broad introduction to the principles and practice of modern data management, with an emphasis on the relational database model. Topics in relational database systems include data modeling; the relational model; relational algebra; Structured Query Language (SQL); and data quality, transactions, integrity and security. Students will also learn approaches to building relational database application programs. Additional topics include objectoriented and objectrelational databases; semistructured databases (such as XML); and information retrieval. A database project is required.

3 
CSCI331 
Introduction to Intelligent Systems
An introduction to the theories and algorithms used to create intelligent systems. Topics include search algorithms (e.g. A*, iterative deepening), logic, planning, knowledge representation, machine learning, and applications from areas such as computer vision, robotics, natural language processing, and expert systems. Programming assignments are an integral part of the course.

3 
CS Elective§

3  
LAS Elective§

3  
LAS Immersion 1

3  
Cooperative Education (spring)

Coop  
Fourth Year  
CSCI471 
Professional Communications (WI)
This course focuses on developing and improving verbal and written communication skills specific to the discipline of computer science. Topics include the different forms of writing in computer science (books, theses, journal articles, technical reports, manuscripts, etc.), writing styles of computer scientists, document readability and usability, documents for career readiness, effective presentations, teamwork and peer review, research methods, experimentation, documenting mathematics and algorithms, proper formatting of graphs, figures, and tables, and ethical, social, and professional issues facing Computer Scientists. This course is approved as Writing Intensive.

3 
CSCI344 
Programming Language Concepts
This course is a study of the syntax and semantics of a diverse set of highlevel programming languages. The languages chosen are compared and contrasted in order to demonstrate general principles of programming language design and implementation. The course emphasizes the concepts underpinning modern languages rather than the mastery of particular language details. Programming projects will be required.

3 
Free Electives

6  
CS Electives§

6  
LAS Elective‡

3  
LAS Immersion 2

3  
Fifth Year  
Cooperative Education (fall)

Coop  
CS Elective§

3  
LAS Immersion 3

3  
LAS Elective

3  
Free Electives

6  
Total Semester Credit Hours 
126

(WI) Refers to a writing intensive course within the major.
* Please see Wellness Education Requirement for more information. Students completing bachelor's degrees are required to complete two different Wellness courses.
‡ Students must complete one of the following lab science sequences: (a) University Physics I, II (PHYS211, 212); (b) General and Analytical Chemistry I, II and Labs (CHMG141, 142, 145, 146); or (c) General Biology I, II, and Labs (BIOL101, 102, 103, 104). Students are free to choose from approved science electives that either extend or complement their lab science selection.
§ Two computer science elective courses must come from the same CS cluster.
Accelerated dual degree option
Accelerated dual degree options are for undergraduate students with outstanding academic records. Upon acceptance, wellqualified undergraduate students can begin graduate study before completing their BS degree, shortening the time it takes to earn both degrees. Students should consult an academic adviser for more information.
Computer science, BS/MS degree, typical course sequence
Course  Sem. Cr. Hrs.  

First Year  
ACSC010 
Year One
The Year One class serves as an interdisciplinary catalyst for firstyear students to access campus resources, services and opportunities that promote selfknowledge, personal success, leadership development, social responsibility and life academic skills awareness and application. Year One is also designed to challenge and encourage firstyear students to get to know one another, build relationships and help them become an integral part of the campus community.

0 
CSCI141 
Computer Science I
This course serves as an introduction to computational thinking using a problemcentered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments (both in class and for homework) requiring a pseudo code solution and an implementation are an integral part of the course. An endofterm project is also required.

4 
MATH181 
LAS Perspective 7A (mathematical): Projectbased Calculus I
This is the first in a twocourse sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers functions, limits, continuity, the derivative, rules of differentiation, applications of the derivative, Riemann sums, definite integrals, and indefinite integrals.

4 
MATH182 
LAS Perspective 7B (mathematical): Projectbased Calculus II
This is the second in a twocourse sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers techniques of integration including integration by parts, partial fractions, improper integrals, applications of integration, representing functions by infinite series, convergence and divergence of series, parametric curves, and polar coordinates.

4 
CSCI142 
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an objectoriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, objectoriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of objectoriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary objectoriented design patterns. Input and output streams, graphical user interfaces, and exception handling are covered. Students will also be introduced to a modern integrated software development environment (IDE). Programming projects will be required.

4 
MATH190 
Discrete Mathematics for Computing
This course introduces students to ideas and techniques from discrete mathematics that are widely used in Computer Science. Students will learn about the fundamentals of propositional and predicate calculus, set theory, relations, recursive structures and counting. This course will help increase students’ mathematical sophistication and their ability to handle abstract problems.

3 
First Year LAS Elective

3  
LAS Perspective 2 (artistic)

3  
LAS Perspective 3 (global)

3  
LAS Perspective 4 (social)

3  
First Year Writing

3  
Wellness Education*

0  
Second Year  
CSCI243 
The Mechanics of Programming
Students will be introduced to the details of program structure and the mechanics of execution as well as supportive operating system features. Security and performance issues in program design will be discussed. The program translation process will be examined. Programming assignments will be required.

3 
Choose one of following: 
3


CSCI262 
Introduction to Computer Science Theory
This course provides an introduction to the theory of computation, including formal languages, grammars, automata theory, computability, and complexity.


CSCI263 
Honors Introduction to Computer Science Theory
This course provides a challenging introduction to the theory of computation with an emphasis on problem solving. Topics include formal languages, grammars, automata theory, computability, and complexity.


MATH251 
Probability and Statistics I
This course introduces sample spaces and events, axioms of probability, counting techniques, conditional probability and independence, distributions of discrete and continuous random variables, joint distributions (discrete and continuous), the central limit theorem, descriptive statistics, interval estimation, and applications of probability and statistics to realworld problems. A statistical package such as Minitab or R is used for data analysis and statistical applications.

3 
CSCI250 
Concepts of Computer Systems
An introduction to the hardware and software organization of computer systems. The course emphasizes a multilevel model of computer organization. Topics include the digital logic level; the micro architecture level; the machine instruction set level; the operating system level; and the assembly language level. Programming assignments will be required.

3 
SWEN261 
Introduction to Software Engineering
An introductory course in software engineering, emphasizing the organizational aspects of software development and software design and implementation by individuals and small teams within a process/product framework. Topics include the software lifecycle, software design, user interface issues, specification and implementation of components, assessing design quality, design reviews and code inspections, software testing, basic support tools, technical communications and system documentation, teambased development. A termlong, teambased project done in a studio format is used to reinforce concepts presented in class.

3 
MATH241 
Linear Algebra
This course is an introduction to the basic concepts of linear algebra, and techniques of matrix manipulation. Topics include linear transformations, Gaussian elimination, matrix arithmetic, determinants, vector spaces, linear independence, basis, null space, row space, and column space of a matrix, eigenvalues, eigenvectors, change of basis, similarity and diagonalization. Various applications are studied throughout the course.

3 
LAS Elective‡

4  
LAS Perspective 1 (ethical)

3  
LAS Perspective 5‡ (natural science inquiry)

4  
LAS Perspective 6‡ (scientific principles)

3  
Cooperative Education (summer)

Coop  
Third Year  
CSCI251 
Concepts of Parallel and Distributed Systems
This course is an introduction to the organization and programming of systems comprising multiple computers. Topics include the organization of multicore computers, parallel computer clusters, computing grids, clientserver systems, and peertopeer systems; computer networks and network protocols; network security; multithreaded programming; and network programming. Programming projects will be required.

3 
CSCI320 
Principles of Data Management
This course provides a broad introduction to the principles and practice of modern data management, with an emphasis on the relational database model. Topics in relational database systems include data modeling; the relational model; relational algebra; Structured Query Language (SQL); and data quality, transactions, integrity and security. Students will also learn approaches to building relational database application programs. Additional topics include objectoriented and objectrelational databases; semistructured databases (such as XML); and information retrieval. A database project is required.

3 
Computer Science Elective§

3  
LAS Elective†

3  
LAS Immersion 1

3  
Cooperative Education (spring)

Coop  
Fourth Year  
Choose one of following: 
3


CSCI261 
Analysis of Algorithms
This course provides an introduction to the design and analysis of algorithms. It covers a variety of classical algorithms and data structures and their complexity and will equip students with the intellectual tools to design, analyze, implement, and evaluate their own algorithms.


CSCI264 
Honors Analysis of Algorithms
This course provides a challenging introduction to the design and analysis of algorithms with an emphasis on problem solving and algorithmic research. It covers a variety of classical algorithms and data structures and their complexity, as well as deeper coverage of more advanced material; for example, linear programming, approximation algorithms, and randomized algorithms. The course will equip students with the intellectual tools to design, analyze, implement, and evaluate their own algorithms.


CSCI471 
Professional Communications (WI)
This course focuses on developing and improving verbal and written communication skills specific to the discipline of computer science. Topics include the different forms of writing in computer science (books, theses, journal articles, technical reports, manuscripts, etc.), writing styles of computer scientists, document readability and usability, documents for career readiness, effective presentations, teamwork and peer review, research methods, experimentation, documenting mathematics and algorithms, proper formatting of graphs, figures, and tables, and ethical, social, and professional issues facing Computer Scientists. This course is approved as Writing Intensive.

3 
CSCI331 
Introduction to Intelligent Systems
An introduction to the theories and algorithms used to create intelligent systems. Topics include search algorithms (e.g. A*, iterative deepening), logic, planning, knowledge representation, machine learning, and applications from areas such as computer vision, robotics, natural language processing, and expert systems. Programming assignments are an integral part of the course.

3 
CSCI344 
Programming Language Concepts
This course is a study of the syntax and semantics of a diverse set of highlevel programming languages. The languages chosen are compared and contrasted in order to demonstrate general principles of programming language design and implementation. The course emphasizes the concepts underpinning modern languages rather than the mastery of particular language details. Programming projects will be required.

3 
Computer Science Elective§

3  
Science Elective

3  
LAS Elective†

3  
Free Electives

6  
LAS Immersion 2

3  
Fifth Year  
Cooperative Education (fall)

Coop  
Computer Science Elective§

3  
LAS Immersion 3

3  
LAS Elective

3  
Free Electives

6  
Sixth Year  
CSCI610 
Fundamentals of Computer Graphics
Foundations of Computer Graphics is a study of the hardware and software principles of interactive raster graphics. Topics include an introduction to the basic concepts, 2D and 3D modeling and transformations, viewing transformations, projections, rendering techniques, graphical software packages and graphics systems. The course will focus on rasterization techniques and emphasize the hardware rasterization pipeline including the use of hardware shaders. Students will use a standard computer graphics API to reinforce concepts and study fundamental computer graphics algorithms. Programming projects and a survey of the current graphics literature will be required. Note: students who complete CSCI510 may not take CSCI610 for credit.

3 
CSCI664 
Computational Complexity
This course provides an introduction to computational complexity theory. It covers the P=NP problem, time and space complexity, randomization, approximability, and relativization. Course offered every other year.

3 
CSCI799 
Computer Science Independent Study
Students work with a supervising faculty member on topics of mutual interest. A student works with a potential faculty sponsor to draft a proposal that describes what a student plans to do, what deliverables are expected, how the student's work will be evaluated, and how much credit will be assigned for successful completion of the work. The faculty sponsor proposes the grade, but before the grade is officially recorded, the student must submit a final report that summarizes what was actually accomplished.

6 
CSCI631 
Foundations of Computer Vision
An introduction to the underlying concepts of computer vision and image understanding. The course will consider fundamental topics, including image formation, edge detection, texture analysis, color, segmentation, shape analysis, detection of objects in images and high level image representation. Depending on the interest of the class, more advanced topics will be covered, such as image database retrieval or robotic vision. Programming assignments are an integral part of the course. Note: students who complete CSCI431 may not take CSCI631 for credit.

3 
CSCI790 
Computer Science MS Thesis
Thesis capstone of the master's degree program. Student must submit an acceptable thesis proposal in order to enroll. It is expected that the work would lead to a paper of the caliber of those generally acceptable to a national conference.

6 
Total Semester Credit Hours 
156††

Please see General Education Curriculum–Liberal Arts and Sciences (LAS) for more information.
(WI) Refers to a writing intensive course within the major.
* Please see Wellness Education Requirement for more information. Students completing bachelor's degrees are required to complete two different Wellness courses.
‡ Students must complete one of the following lab science sequences: (a) University Physics I, II (PHYS211, 212); (b) General and Analytical Chemistry I, II and Labs (CHMG141, 142, 145, 146); or (c) General Biology I, II, and Labs (BIOL101, 102, 103, 104). Students are free to choose from approved science electives that either extend or complement their lab science selection.
§ Two computer science elective courses must come from the same CS cluster.
** Students who complete the MS Project take one more graduate elective than those who complete the MS Thesis.
†† The BS degree requires 126 semester hours; the MS degree requires 30 semester hours; students use 9 semester hours of computer science graduate electives toward both degrees.
Computer science, BS degree/Computing security, MS degree, typical course sequence
Course  Sem. Cr. Hrs.  

First Year  
CSCI141 
Computer Science I
This course serves as an introduction to computational thinking using a problemcentered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments (both in class and for homework) requiring a pseudo code solution and an implementation are an integral part of the course. An endofterm project is also required.

4 
CSCI142 
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an objectoriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, objectoriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of objectoriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary objectoriented design patterns. Input and output streams, graphical user interfaces, and exception handling are covered. Students will also be introduced to a modern integrated software development environment (IDE). Programming projects will be required.

4 
MATH181 
LAS Perspective 7A (mathematical): Projectbased Calculus I
This is the first in a twocourse sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers functions, limits, continuity, the derivative, rules of differentiation, applications of the derivative, Riemann sums, definite integrals, and indefinite integrals.

4 
MATH182 
LAS Perspective 7B (mathematical): Projectbased Calculus II
This is the second in a twocourse sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers techniques of integration including integration by parts, partial fractions, improper integrals, applications of integration, representing functions by infinite series, convergence and divergence of series, parametric curves, and polar coordinates.

4 
ACSC010 
Year One
The Year One class serves as an interdisciplinary catalyst for firstyear students to access campus resources, services and opportunities that promote selfknowledge, personal success, leadership development, social responsibility and life academic skills awareness and application. Year One is also designed to challenge and encourage firstyear students to get to know one another, build relationships and help them become an integral part of the campus community.

0 
MATH190 
Discrete Mathematics for Computing
This course introduces students to ideas and techniques from discrete mathematics that are widely used in Computer Science. Students will learn about the fundamentals of propositional and predicate calculus, set theory, relations, recursive structures and counting. This course will help increase students’ mathematical sophistication and their ability to handle abstract problems.

3 
First Year LAS Elective

3  
First Year Writing

3  
LAS Perspective 2 (artistic)

3  
LAS Perspective 3 (global)

3  
LAS Perspective 4 (social)

3  
Wellness Education*

0  
Second Year  
CSCI243 
The Mechanics of Programming
Students will be introduced to the details of program structure and the mechanics of execution as well as supportive operating system features. Security and performance issues in program design will be discussed. The program translation process will be examined. Programming assignments will be required.

3 
Choose one of the following: 
3


CSCI262 
Introduction to Computer Science
This course provides an introduction to the theory of computation, including formal languages, grammars, automata theory, computability, and complexity.


CSCI263 
Honors Introduction to Computer Science
This course provides a challenging introduction to the theory of computation with an emphasis on problem solving. Topics include formal languages, grammars, automata theory, computability, and complexity.


MATH251 
Probability and Statistics I
This course introduces sample spaces and events, axioms of probability, counting techniques, conditional probability and independence, distributions of discrete and continuous random variables, joint distributions (discrete and continuous), the central limit theorem, descriptive statistics, interval estimation, and applications of probability and statistics to realworld problems. A statistical package such as Minitab or R is used for data analysis and statistical applications.

3 
CSCI250 
Concepts of Computer Systems
An introduction to the hardware and software organization of computer systems. The course emphasizes a multilevel model of computer organization. Topics include the digital logic level; the micro architecture level; the machine instruction set level; the operating system level; and the assembly language level. Programming assignments will be required.

3 
SWEN261 
Introduction to Software Engineering
An introductory course in software engineering, emphasizing the organizational aspects of software development and software design and implementation by individuals and small teams within a process/product framework. Topics include the software lifecycle, software design, user interface issues, specification and implementation of components, assessing design quality, design reviews and code inspections, software testing, basic support tools, technical communications and system documentation, teambased development. A termlong, teambased project done in a studio format is used to reinforce concepts presented in class.

3 
MATH241 
Linear Algebra
This course is an introduction to the basic concepts of linear algebra, and techniques of matrix manipulation. Topics include linear transformations, Gaussian elimination, matrix arithmetic, determinants, vector spaces, linear independence, basis, null space, row space, and column space of a matrix, eigenvalues, eigenvectors, change of basis, similarity and diagonalization. Various applications are studied throughout the course.

3 
LAS Perspective 1 (ethical)

3  
LAS Perspective 5 (natural science inquiry)

4  
LAS Perspective 6 (scientific principles)

3  
Wellness Education*


Cooperative Education (summer)

Coop  
Third Year  
CSCI251 
Concepts of Parallel and Distributed Systems
This course is an introduction to the organization and programming of systems comprising multiple computers. Topics include the organization of multicore computers, parallel computer clusters, computing grids, clientserver systems, and peertopeer systems; computer networks and network protocols; network security; multithreaded programming; and network programming. Programming projects will be required.

3 
CSCI320 
Principles of Data Management
This course provides a broad introduction to the principles and practice of modern data management, with an emphasis on the relational database model. Topics in relational database systems include data modeling; the relational model; relational algebra; Structured Query Language (SQL); and data quality, transactions, integrity and security. Students will also learn approaches to building relational database application programs. Additional topics include objectoriented and objectrelational databases; semistructured databases (such as XML); and information retrieval. A database project is required.

3 
Computer Science Elective

3  
Science Elective ‡

3  
LAS Immersion I (WI)

3  
Cooperative Education (spring)

Coop  
Fourth Year  
CSCI261 
Analysis of Algorithms
This course provides an introduction to the design and analysis of algorithms. It covers a variety of classical algorithms and data structures and their complexity and will equip students with the intellectual tools to design, analyze, implement, and evaluate their own algorithms.

3 
CSCI344 
Programming Language Concepts
This course is a study of the syntax and semantics of a diverse set of highlevel programming languages. The languages chosen are compared and contrasted in order to demonstrate general principles of programming language design and implementation. The course emphasizes the concepts underpinning modern languages rather than the mastery of particular language details. Programming projects will be required.

3 
CSCI471 
Professional Communications (WI)
This course focuses on developing and improving verbal and written communication skills specific to the discipline of computer science. Topics include the different forms of writing in computer science (books, theses, journal articles, technical reports, manuscripts, etc.), writing styles of computer scientists, document readability and usability, documents for career readiness, effective presentations, teamwork and peer review, research methods, experimentation, documenting mathematics and algorithms, proper formatting of graphs, figures, and tables, and ethical, social, and professional issues facing Computer Scientists. This course is approved as Writing Intensive.

3 
CSCI331 
Introduction to Intelligent Systems
An introduction to the theories and algorithms used to create intelligent systems. Topics include search algorithms (e.g. A*, iterative deepening), logic, planning, knowledge representation, machine learning, and applications from areas such as computer vision, robotics, natural language processing, and expert systems. Programming assignments are an integral part of the course.

3 
CSEC731 
Web Server and Application Security Audits
This course discusses the processes and procedures to perform a technical security audit of web servers and web based applications. Students will not only explore Web Servers and Applications/Services threats, but also apply the latest auditing techniques to identify vulnerabilities existing in or stemming from web servers and applications. Students will write and present their findings and recommendations in audit reports on web servers and application vulnerabilities. To be successful in this course students should be knowledgeable in a scripting language and comfortable with the administration of both Linux and Windows platforms.

3 
LAS Immersion 2

3  
Computer Science Electives

6  
Free Elective

3  
Science Elective ‡

3  
Fifth Year  
CSEC733 
Information Security Risk Management
This course will provide students with an introduction to the principle of risk management and its three key elements: risk analysis, risk assessment and vulnerability assessment. Students will also learn the differences between quantitative and qualitative risk assessment, and details of how security metrics can be modeled/monitored/controlled and how various types of qualitative risk assessment can be applied to the overall assessment process. Several industry case studies will be studied and discussed. Students will work together in teams to conduct risk assessments based on selected case studies or hypothetical scenarios. Finally, they will write and present their risk assessment reports and findings.

3 
CSEC742 
Computer System Security
The importance of effective security policies and procedures coupled with experience and practice is emphasized and reinforced through research and practical assignments. Organization and management of security discipline and response to threats is studied. Case studies of effective and failed security planning and implementation will be examined and analyzed. The issues influencing proper and appropriate planning for security and response to attacks will be studied. To be successful in this course students should be knowledgeable in networking, systems, and security technologies.

3 
Cooperative Education (fall)

Coop  
Computer Science Elective

3  
LAS Immersion 3

3  
LAS Elective

3  
Sixth Year  
CSEC601 
Research Methods and Proposal Development
The goal of this course is to introduce the students to a programming paradigm and an appropriate programming language chosen from those that are currently important or that show high promise of becoming important. A significant portion of the learning curve occurs through programming assignments with exemplary solutions discussed later in class. The instructor will post specifics prior to registration. With the approval of the program coordinator, the course can be taken for credit more than once, provided each instance deals with a different paradigm and language. A term project involving independent investigation is also required.

3 
CSEC603 
Enterprise Security
This course is designed to provide students with the advanced concepts needed to establish network security strategies to ensure adequate protection for the corporate environment and yet provide accessibility for the corporate community.

3 
CSEC604 
Cryptography and Authentication
In this course, students will learn in depth knowledge of cryptography and authentication. Students will explore various cryptography algorithms, authentication protocols, and their design and implementation. Students will work on a project to implement a cryptographic algorithm and/or an authentication protocol. The applications of cryptography and authentications in the areas of computer networks and systems and information assurance will also be investigated.

3 
Computing Security Graduate Electives

6  
CSEC Thesis

6  
Total Semester Credit Hours 
156

Please see General Education Curriculum–Liberal Arts and Sciences (LAS) for more information.
(WI) Refers to a writing intensive course within the major.
* Please see Wellness Education Requirement for more information. Students completing bachelor's degrees are required to complete two different Wellness courses.
‡ Students satisfy this requirement by taking either a 3 or 4 credit hour lab science course. If a science course consists of separate lecture and laboratory sections, students must take both the lecture and lab portions to satisfy the requirement.
Computer science, BS degree/Software engineering, MS degree, typical course sequence
Course  Sem. Cr. Hrs.  

First Year  
CSCI141 
Computer Science I
This course serves as an introduction to computational thinking using a problemcentered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments (both in class and for homework) requiring a pseudo code solution and an implementation are an integral part of the course. An endofterm project is also required.

4 
CSCI142 
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an objectoriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, objectoriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of objectoriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary objectoriented design patterns. Input and output streams, graphical user interfaces, and exception handling are covered. Students will also be introduced to a modern integrated software development environment (IDE). Programming projects will be required.

4 
MATH181 
LAS Perspective 7A (mathematical): Projectbased Calculus I
This is the first in a twocourse sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers functions, limits, continuity, the derivative, rules of differentiation, applications of the derivative, Riemann sums, definite integrals, and indefinite integrals.

4 
MATH182 
LAS Perspective 7B (mathematical): Projectbased Calculus II
This is the second in a twocourse sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers techniques of integration including integration by parts, partial fractions, improper integrals, applications of integration, representing functions by infinite series, convergence and divergence of series, parametric curves, and polar coordinates.

4 
ACSC010 
Year One
The Year One class serves as an interdisciplinary catalyst for firstyear students to access campus resources, services and opportunities that promote selfknowledge, personal success, leadership development, social responsibility and life academic skills awareness and application. Year One is also designed to challenge and encourage firstyear students to get to know one another, build relationships and help them become an integral part of the campus community.

0 
MATH190 
Discrete Mathematics for Computing
This course introduces students to ideas and techniques from discrete mathematics that are widely used in Computer Science. Students will learn about the fundamentals of propositional and predicate calculus, set theory, relations, recursive structures and counting. This course will help increase students’ mathematical sophistication and their ability to handle abstract problems.

3 
First Year Writing

3  
LAS Perspective 1 (ethical)

3  
LAS Perspective 2 (artistic)

3  
LAS Perspective 3 (global)

3  
LAS Perspective 4 (social)

3  
Wellness Education*

0  
Second Year  
CSCI243 
The Mechanics of Programming
Students will be introduced to the details of program structure and the mechanics of execution as well as supportive operating system features. Security and performance issues in program design will be discussed. The program translation process will be examined. Programming assignments will be required.

3 
Choose one of the following: 
3


CSCI262 
Introduction to Computer Science
This course provides an introduction to the theory of computation, including formal languages, grammars, automata theory, computability, and complexity.


CSCI263 
Honors Introduction to Computer Science
This course provides a challenging introduction to the theory of computation with an emphasis on problem solving. Topics include formal languages, grammars, automata theory, computability, and complexity.


MATH251 
Probability and Statistics I
This course introduces sample spaces and events, axioms of probability, counting techniques, conditional probability and independence, distributions of discrete and continuous random variables, joint distributions (discrete and continuous), the central limit theorem, descriptive statistics, interval estimation, and applications of probability and statistics to realworld problems. A statistical package such as Minitab or R is used for data analysis and statistical applications.

3 
Wellness Education


Choose one of the following: 
3


CSCI261 
Analysis of Algorithms
This course provides an introduction to the design and analysis of algorithms. It covers a variety of classical algorithms and data structures and their complexity and will equip students with the intellectual tools to design, analyze, implement, and evaluate their own algorithms.


CSCI264 
Honors Analysis of Algorithms
This course provides a challenging introduction to the design and analysis of algorithms with an emphasis on problem solving and algorithmic research. It covers a variety of classical algorithms and data structures and their complexity, as well as deeper coverage of more advanced material; for example, linear programming, approximation algorithms, and randomized algorithms. The course will equip students with the intellectual tools to design, analyze, implement, and evaluate their own algorithms.


SWEN261 
Introduction to Software Engineering
An introductory course in software engineering, emphasizing the organizational aspects of software development and software design and implementation by individuals and small teams within a process/product framework. Topics include the software lifecycle, software design, user interface issues, specification and implementation of components, assessing design quality, design reviews and code inspections, software testing, basic support tools, technical communications and system documentation, teambased development. A termlong, teambased project done in a studio format is used to reinforce concepts presented in class.

3 
MATH241 
Linear Algebra
This course is an introduction to the basic concepts of linear algebra, and techniques of matrix manipulation. Topics include linear transformations, Gaussian elimination, matrix arithmetic, determinants, vector spaces, linear independence, basis, null space, row space, and column space of a matrix, eigenvalues, eigenvectors, change of basis, similarity and diagonalization. Various applications are studied throughout the course.

3 
Lab Science†

4  
LAS Elective

3  
LAS Perspective 5 (natural science inquiry)

4  
LAS Perspective 6 (scientific principles)

3  
Cooperative Education (summer)

Coop  
Third Year  
CSCI331 
Introduction to intelligent Systems
An introduction to the theories and algorithms used to create intelligent systems. Topics include search algorithms (e.g. A*, iterative deepening), logic, planning, knowledge representation, machine learning, and applications from areas such as computer vision, robotics, natural language processing, and expert systems. Programming assignments are an integral part of the course.

3 
CSCI320 
Principles of Data Management
This course provides a broad introduction to the principles and practice of modern data management, with an emphasis on the relational database model. Topics in relational database systems include data modeling; the relational model; relational algebra; Structured Query Language (SQL); and data quality, transactions, integrity and security. Students will also learn approaches to building relational database application programs. Additional topics include objectoriented and objectrelational databases; semistructured databases (such as XML); and information retrieval. A database project is required.

3 
CSCI250 
Concepts of Computer Systems
An introduction to the hardware and software organization of computer systems. The course emphasizes a multilevel model of computer organization. Topics include the digital logic level; the micro architecture level; the machine instruction set level; the operating system level; and the assembly language level. Programming assignments will be required.

3 
Computer Science Elective

3  
Science Elective‡

3  
LAS Immersion I (WI)

3  
Cooperative Education (spring)

Coop  
Fourth Year  
CSCI251 
Concepts of Parrallel and Distributed Systems
This course is an introduction to the organization and programming of systems comprising multiple computers. Topics include the organization of multicore computers, parallel computer clusters, computing grids, clientserver systems, and peertopeer systems; computer networks and network protocols; network security; multithreaded programming; and network programming. Programming projects will be required.

3 
CSCI344 
Programming Language Concepts
This course is a study of the syntax and semantics of a diverse set of highlevel programming languages. The languages chosen are compared and contrasted in order to demonstrate general principles of programming language design and implementation. The course emphasizes the concepts underpinning modern languages rather than the mastery of particular language details. Programming projects will be required.

3 
CSCI471 
Professional Communications (WI)
This course focuses on developing and improving verbal and written communication skills specific to the discipline of computer science. Topics include the different forms of writing in computer science (books, theses, journal articles, technical reports, manuscripts, etc.), writing styles of computer scientists, document readability and usability, documents for career readiness, effective presentations, teamwork and peer review, research methods, experimentation, documenting mathematics and algorithms, proper formatting of graphs, figures, and tables, and ethical, social, and professional issues facing Computer Scientists. This course is approved as Writing Intensive.

3 
SWEN745 
Software Modeling
Modeling plays a pivotal role during the software lifecycle during the preconstruction and postconstruction activities of the software lifecycle. During the preconstruction stage, models help software engineers understand, specify, and analyze software requirements and designs. During the postconstruction stage, models can be used to analyze software systems while in operation. This kind of analysis includes reliability and safety issues as well as timing constraint analysis. (Department approval)

3 
SWEN749 
Software Evolution and Reengineering
This course explores the concepts of software evolution and reengineering and introduces approaches and support tools used to extract the information needed to assess existing software systems. Major maintenance activities are presented including estimating maintenance costs, managing change and predicting maintainability with software quality metrics. Organizational issues relative to product maintenance are discussed. Principles of software reuse and reverse engineering techniques are demonstrated through the use of class activities, team projects and case studies.

3 
LAS Immersion 2

3  
Computer Science Electives

6  
Free Elective

3  
Science Elective ‡

3  
Fifth Year  
SWEN722 
Process Engineering
In this course, students will study various lifecycle models for developing software systems. They will study the Software Process Engineering Metamodel (SPEM) standard as a tool for modeling and analyzing engineering processes. Students will use SPEM to characterize various process and organization models and patterns, and they will align these process characteristics to categories of needs for various organizations and projects. The students will study process engineering frameworks and the configuration and assembly of reusable process components into processes. Students will also study how tools and methods support the process. Students will also study software process assessment models, including the Capability Maturity Models, and learn how to identify specific recommendations for an organization to improve their processes. Students will apply their learning to engineer software engineering processes, tools, and methods appropriate for their graduate projects, course projects, and projects for organizations they have worked for.

3 
Cooperative Education (fall)

Coop  
Computer Science Elective

3  
LAS Immersion 3

3  
LAS Elective

3  
Free Elective

3  
Sixth Year  
SWEN640 
Research Methods
Overview of the academic research methodologies used in graduate level work. Topics include writing style, audience analysis, research planning, experimental design, document structure, research validation, and the process for submission and review to conferences and journals. This course provides the student with an opportunity to identify and develop a detailed thesis or capstone proposal that will be continued in a subsequent course. An indepth study of a software engineering topic will be research focused. The student selects a research problem, conducts background research, and selects appropriate technology and methodologies needed to fully conduct the project. The topic is selected by the student and is in agreement with the student's adviser and committee. The proposal is presented in a scholarly format for approval by the adviser and committee.

3 
SWEN772 
Software Quality Engineering
This course begins with an exploration of the concepts underlying quality systems and the use of metrics. Students are encouraged to discuss the advantages as well as the limitations of systems and quantitative approaches, with a view to understanding the 40 importance of interpretation in metrics usage and of matching quality systems choices to organizational objectives and culture. They learn the use of modern metrics such as DRE, PCE, COQ/COPQ, reliability objectives and SUMI scores through exercises in analyzing and interpreting charts. This is complemented with a project where they work in teams to design an appropriate quality system for a specific project/organizational situation, and discuss the application and analysis of its evaluation experimentation as a means of improving the quality aspects of subject project/organizational situation.

3 
SWEN755 
Software Architecture and Product Lines
A system's software architecture is the first technical artifact that illustrates a proposed solution to a stated problem. For all but the simplest system, the achievement of qualities such as flexibility, modifiability, security, and reliability is critically dependent on the components and interactions defined by the architecture. The course focuses on the definition of architectural structures, the analysis of architectures in terms of tradeoffs among conflicting constraints, the documentation of architecture for use over a product's life cycle, and the role of architecture in defining product lines based on reusable components.

3 
SWEN799 
Independent Study
This course provides the graduate student an opportunity to explore an aspect of software engineering in depth, under the direction of an adviser. The student selects a topic, conducts background research, develops the system, analyses results, and disseminates the project work. The report explains the topic/problem, the student's approach and the results. (Completion of 9 semester hours is needed for enrollment)

3 
SWEN790 
Thesis
This course provides the student with an opportunity to execute a thesis project, analyze and document the project in thesis document form. An indepth study of a software engineering topic will be research focused, having built upon the thesis proposal developed prior to this course. The student is advised by their primary faculty adviser and committee. The thesis and thesis defense is presented for approval by the thesis adviser and committee.

6 
Graduate Elective

3  
Total Semester Credit Hours 
156

Please see General Education Curriculum–Liberal Arts and Sciences (LAS) for more information.
(WI) Refers to a writing intensive course within the major.
* Please see Wellness Education Requirement for more information. Students completing bachelor's degrees are required to complete two different Wellness courses.
† Students must complete one of the following lab science sequences: University Physics I (PHYS211) and University Physics II (PHYS212); General and Analytical Chemistry I (CHMG141), General and Analytical Chemistry I Lab (CHMG145), General and Analytical Chemistry II (CHMG142), and General and Analytical Chemistry II Lab (CHMG146); or General Biology I (BIOL101), General Biology I Lab (BIOL103), General Biology II (BIOL102), and General Biology II Lab (BIOL104).
‡ Students satisfy this requirement by taking either a 3 or 4 credit hour lab science course. If a science course consists of separate lecture and laboratory sections, students must take both the lecture and lab portions to satisfy the requirement.
Admission Requirements
Freshman Admission
For all bachelor’s degree programs, a strong performance in a college preparatory program is expected. Generally, this includes 4 years of English, 34 years of mathematics, 23 years of science, and 3 years of social studies and/or history.
Specific math and science requirements and other recommendations
 4 years of math including precalculus required
 Requires chemistry or physics and strongly recommends both.
 Computing electives are recommended
Transfer Admission
Transfer course recommendations without associate degree
Courses in computer science, calculus, liberal arts; calculusbased physics, chemistry, or biology
Appropriate associate degree programs for transfer
AS degree in computer science, engineering science, or liberal arts
Learn about admissions and financial aid