Computer Science BS

Computer science, BS degree, typical course sequence

Course Sem. Cr. Hrs.
First Year
CSCI-141
Computer Science I
This course serves as an introduction to computational thinking using a problem-centered 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 end-of-term project is also required.
4
CSCI-142
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of object-oriented 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 object-oriented 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
MATH-181
LAS Perspective 7A (mathematical): Project-based Calculus I
This is the first in a two-course 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
MATH-182
LAS Perspective 7B (mathematical): Project-based Calculus II
This is the second in a two-course 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
MATH-190
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
YOPS-10
RIT 365: RIT Connections
RIT 365 students participate in experiential learning opportunities designed to launch them into their career at RIT, support them in making multiple and varied connections across the university, and immerse them in processes of competency development. Students will plan for and reflect on their first-year experiences, receive feedback, and develop a personal plan for future action in order to develop foundational self-awareness and recognize broad-based professional competencies.
0
 
LAS Perspective 1 (ethical) †
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
CSCI-099
Undergraduate Cooperative Education Seminar
This seminar helps students prepare for Computer Science co-operative education employment (“co-op”) by developing job search strategies and materials, and reviewing relevant policies. Students are introduced to RIT’s Office of Career Services and Cooperative Education, and learn about professional and ethical responsibilities for their co-op and subsequent professional experiences. Completion of this seminar and the related assignments are required before a CS student can be registered for co-op.
0
CSCI-243
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
 CSCI-261
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.
 
 CSCI-264
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
   CSCI-262
   Introduction to Computer Science Theory
This course provides an introduction to the theory of computation, including formal languages, grammars, auto-mata theory, computability, and complexity.
 
   CSCI-263
   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, auto-mata theory, computability, and complexity.
 
MATH-241
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
MATH-251
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 real-world problems. A statistical package such as Minitab or R is used for data analysis and statistical applications.
3
SWEN-261
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, team-based development. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class.
3
 
LAS Perspective 5‡ (natural science inquiry)
4
 
LAS Perspective 6‡ (scientific principles)
3
 
LAS Elective‡
7
 
Cooperative Education (summer)
Co-op
Third Year
CSCI-250
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
CSCI-320
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 object-oriented and object-relational databases; semi-structured databases (such as XML); and information retrieval. A database project is required.
3
CSCI-331
Introduction to Intelligent Systems
An introduction to the theories and algorithms used to create artificial intelligence (AI) systems. Topics include search algorithms, logic, planning, machine learning, and applications from areas such as computer vision, robotics, and natural language processing. Programming assignments are an integral part of the course.
3
 
LAS Elective§
3
 
LAS Immersion 1
3
 
Cooperative Education (spring)
Co-op
Fourth Year
CSCI-251
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 multi-core computers, parallel computer clusters, computing grids, client-server systems, and peer-to-peer systems; computer networks and network protocols; network security; multi-threaded programming; and network programming. Programming projects will be required.
3
CSCI-344
Programming Language Concepts
This course is a study of the syntax and semantics of a diverse set of high-level 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
CSCI-471
Professional Communications
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
 
Free Electives
6
 
CS Electives§
9
 
LAS Elective‡
3
 
LAS Immersion 2
3
Fifth Year
 
CS Elective§
3
 
LAS Immersion 3
3
 
LAS Elective
3
 
Free Electives
6
 
Cooperative Education (fall)
Co-op
Total Semester Credit Hours
126

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.

Ethical Perspective course must be chosen from PHIL-102, PHIL-202 or PHIL-306.

‡ Students must complete one of the following lab science sequences: (a) University Physics I, II (PHYS-211, 212); (b) General and Analytical Chemistry I, II and Labs (CHMG-141, 142, 145, 146); or (c) General Biology I, II, and Labs (BIOL-101, 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, well-qualified 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
CSCI-141
Computer Science I
This course serves as an introduction to computational thinking using a problem-centered 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 end-of-term project is also required.
4
CSCI-142
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of object-oriented 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 object-oriented 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
MATH-181
LAS Perspective 7A (mathematical): Project-based Calculus I
This is the first in a two-course 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
MATH-182
LAS Perspective 7B (mathematical): Project-based Calculus II
This is the second in a two-course 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
MATH-190
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
YOPS-10
RIT 365: RIT Connections
RIT 365 students participate in experiential learning opportunities designed to launch them into their career at RIT, support them in making multiple and varied connections across the university, and immerse them in processes of competency development. Students will plan for and reflect on their first-year experiences, receive feedback, and develop a personal plan for future action in order to develop foundational self-awareness and recognize broad-based professional competencies.
0
 
LAS Perspective 1 (ethical)†
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
CSCI-099
Undergraduate Cooperative Education Seminar
This seminar helps students prepare for Computer Science co-operative education employment (“co-op”) by developing job search strategies and materials, and reviewing relevant policies. Students are introduced to RIT’s Office of Career Services and Cooperative Education, and learn about professional and ethical responsibilities for their co-op and subsequent professional experiences. Completion of this seminar and the related assignments are required before a CS student can be registered for co-op.
0
CSCI-243
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
 CSCI-261
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.
 
 CSCI-264
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
   CSCI-262
   Introduction to Computer Science Theory
This course provides an introduction to the theory of computation, including formal languages, grammars, auto-mata theory, computability, and complexity.
 
   CSCI-263
   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, auto-mata theory, computability, and complexity.
 
MATH-241
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
MATH-251
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 real-world problems. A statistical package such as Minitab or R is used for data analysis and statistical applications.
3
SWEN-261
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, team-based development. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class.
3
 
LAS Perspective 5‡ (natural science inquiry)
4
 
LAS Perspective 6‡ (scientific principles)
3
 
LAS Elective‡
7
 
Cooperative Education (summer)
Co-op
Third Year
CSCI-250
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
CSCI-320
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 object-oriented and object-relational databases; semi-structured databases (such as XML); and information retrieval. A database project is required.
3
CSCI-331
Introduction to Intelligent Systems
An introduction to the theories and algorithms used to create artificial intelligence (AI) systems. Topics include search algorithms, logic, planning, machine learning, and applications from areas such as computer vision, robotics, and natural language processing. Programming assignments are an integral part of the course.
3
 
LAS Elective§
3
 
LAS Immersion 1
3
 
Cooperative Education (spring)
Co-op
Fourth Year
CSCI-251
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 multi-core computers, parallel computer clusters, computing grids, client-server systems, and peer-to-peer systems; computer networks and network protocols; network security; multi-threaded programming; and network programming. Programming projects will be required.
3
CSCI-344
Programming Language Concepts
This course is a study of the syntax and semantics of a diverse set of high-level 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
CSCI-471
Professional Communications
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
 
Free Electives
6
 
CS Electives§
9
 
LAS Elective‡
3
 
LAS Immersion 2
3
Fifth Year
 
CS Elective§
3
 
LAS Immersion 3
3
 
LAS Elective
3
 
Free Electives
6
 
Cooperative Education (fall)
Co-op
Sixth Year
CSCI-610
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, 2-D and 3-D 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 CSCI-510 may not take CSCI-610 for credit.
3
CSCI-631
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 CSCI-431 may not take CSCI-631 for credit.
3
CSCI-664
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
CSCI-799
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
CSCI-790
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.

Ethical Perspective course must be chosen from PHIL-102, PHIL-202 or PHIL-306.

‡ Students must complete one of the following lab science sequences: (a) University Physics I, II (PHYS-211, 212); (b) General and Analytical Chemistry I, II and Labs (CHMG-141, 142, 145, 146); or (c) General Biology I, II, and Labs (BIOL-101, 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
CSCI-141
Computer Science I
This course serves as an introduction to computational thinking using a problem-centered 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 end-of-term project is also required.
4
CSCI-142
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of object-oriented 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 object-oriented 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
MATH-181
LAS Perspective 7A (mathematical): Project-based Calculus I
This is the first in a two-course 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
MATH-182
LAS Perspective 7B (mathematical): Project-based Calculus II
This is the second in a two-course 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
MATH-190
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
YOPS-10
RIT 365: RIT Connections
RIT 365 students participate in experiential learning opportunities designed to launch them into their career at RIT, support them in making multiple and varied connections across the university, and immerse them in processes of competency development. Students will plan for and reflect on their first-year experiences, receive feedback, and develop a personal plan for future action in order to develop foundational self-awareness and recognize broad-based professional competencies.
0
 
LAS Perspective 1 (ethical) †
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
CSCI-099
Undergraduate Cooperative Education Seminar
This seminar helps students prepare for Computer Science co-operative education employment (“co-op”) by developing job search strategies and materials, and reviewing relevant policies. Students are introduced to RIT’s Office of Career Services and Cooperative Education, and learn about professional and ethical responsibilities for their co-op and subsequent professional experiences. Completion of this seminar and the related assignments are required before a CS student can be registered for co-op.
0
CSCI-243
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
 CSCI-261
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.
 
 CSCI-264
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
   CSCI-262
   Introduction to Computer Science Theory
This course provides an introduction to the theory of computation, including formal languages, grammars, auto-mata theory, computability, and complexity.
 
   CSCI-263
   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, auto-mata theory, computability, and complexity.
 
MATH-241
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
MATH-251
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 real-world problems. A statistical package such as Minitab or R is used for data analysis and statistical applications.
3
SWEN-261
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, team-based development. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class.
3
 
LAS Perspective 5‡ (natural science inquiry)
4
 
LAS Perspective 6‡ (scientific principles)
3
 
LAS Elective‡
7
 
Cooperative Education (summer)
Co-op
Third Year
CSCI-250
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
CSCI-320
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 object-oriented and object-relational databases; semi-structured databases (such as XML); and information retrieval. A database project is required.
3
CSCI-331
Introduction to Intelligent Systems
An introduction to the theories and algorithms used to create artificial intelligence (AI) systems. Topics include search algorithms, logic, planning, machine learning, and applications from areas such as computer vision, robotics, and natural language processing. Programming assignments are an integral part of the course.
3
 
LAS Elective§
3
 
LAS Immersion 1
3
 
Cooperative Education (spring)
Co-op
Fourth Year
CSCI-251
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 multi-core computers, parallel computer clusters, computing grids, client-server systems, and peer-to-peer systems; computer networks and network protocols; network security; multi-threaded programming; and network programming. Programming projects will be required.
3
CSCI-344
Programming Language Concepts
This course is a study of the syntax and semantics of a diverse set of high-level 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
CSCI-471
Professional Communications
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
 
Free Electives
6
 
CS Electives§
9
 
LAS Elective‡
3
 
LAS Immersion 2
3
Fifth Year
 
CS Elective§
3
 
LAS Immersion 3
3
 
LAS Elective
3
 
Free Electives
6
 
Cooperative Education (fall)
Co-op
Sixth Year
CSEC-604
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
CSEC-742
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
 
Computing Security Graduate Electives
9
 
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.

Ethical Perspective course must be chosen from PHIL-102, PHIL-202 or PHIL-306.

‡ 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
CSCI-141
Computer Science I
This course serves as an introduction to computational thinking using a problem-centered 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 end-of-term project is also required.
4
CSCI-142
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of object-oriented 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 object-oriented 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
MATH-181
LAS Perspective 7A (mathematical): Project-Based Calculus I
This is the first in a two-course 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
MATH-182
LAS Perspective 7B (mathematical): Project-Based Calculus II
This is the second in a two-course 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
MATH-190
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
YOPS-10
RIT 365: RIT Connections
RIT 365 students participate in experiential learning opportunities designed to launch them into their career at RIT, support them in making multiple and varied connections across the university, and immerse them in processes of competency development. Students will plan for and reflect on their first-year experiences, receive feedback, and develop a personal plan for future action in order to develop foundational self-awareness and recognize broad-based professional competencies.
0
 
First Year Writing (WI)
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
CSCI-099
Undergraduate Co-operative Education Seminar
This seminar helps students prepare for Computer Science co-operative education employment (“co-op”) by developing job search strategies and materials, and reviewing relevant policies. Students are introduced to RIT’s Office of Career Services and Cooperative Education, and learn about professional and ethical responsibilities for their co-op and subsequent professional experiences. Completion of this seminar and the related assignments are required before a CS student can be registered for co-op.
0
CSCI-243
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
CSCI-499
Computer Science Undergraduate Co-op (summer)
Students perform professional work related to Computer Science for which they are paid. Students work full time during the term for which they are registered. Students must complete a student co-op work report for each term for which they are registered; students are also evaluated each term by their employer. A satisfactory grade is given for co-op when both a completed student co-op work report and a completed, corresponding employer evaluation are received and when both documents are generally consistent.
0
Choose one of the following:
3
    CSCI-262
   Introduction to Computer Science Theory
This course provides an introduction to the theory of computation, including formal languages, grammars, auto-mata theory, computability, and complexity.
 
    CSCI-263
   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, auto-mata theory, computability, and complexity.
 
MATH-241
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
MATH-251
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 real-world problems. A statistical package such as Minitab or R is used for data analysis and statistical applications.
3
Choose one of the following:
3
   CSCI-261
   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.
 
   CSCI-264
   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.
 
SWEN-261
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, team-based development. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class.
3
 
Lab Science†
4
 
LAS Elective
3
 
LAS Perspective 5 (natural science inquiry)‡
3
 
LAS Perspective 6 (scientific principles)†
4
 
Wellness Education*
0
Third Year
CSCI-250
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
CSCI-320
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 object-oriented and object-relational databases; semi-structured databases (such as XML); and information retrieval. A database project is required.
3
CSCI-331
Introduction to intelligent Systems
An introduction to the theories and algorithms used to create artificial intelligence (AI) systems. Topics include search algorithms, logic, planning, machine learning, and applications from areas such as computer vision, robotics, and natural language processing. Programming assignments are an integral part of the course.
3
CSCI-499
Computer Science Undergraduate Co-op (spring)
Students perform professional work related to Computer Science for which they are paid. Students work full time during the term for which they are registered. Students must complete a student co-op work report for each term for which they are registered; students are also evaluated each term by their employer. A satisfactory grade is given for co-op when both a completed student co-op work report and a completed, corresponding employer evaluation are received and when both documents are generally consistent.
0
 
Science Elective‡
3
 
LAS Immersion I (WI)
3
Fourth Year
CSCI-251
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 multi-core computers, parallel computer clusters, computing grids, client-server systems, and peer-to-peer systems; computer networks and network protocols; network security; multi-threaded programming; and network programming. Programming projects will be required.
3
CSCI-344
Programming Language Concepts
This course is a study of the syntax and semantics of a diverse set of high-level 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
CSCI-471
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
SWEN-745
Software Modeling
Modeling plays a pivotal role during the software lifecycle during the pre-construction and post-construction activities of the software lifecycle. During the pre-construction stage, models help software engineers understand, specify, and analyze software requirements and designs. During the post-construction 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
SWEN-777
Software Quality Assurance
This course explores the concepts of process and product quality assurance and introduces approaches and support tools used to extract the information needed to assess and evaluate the quality of existing software systems. Major maintenance activities are detailed including unit and regression testing, test case generation, software refactoring, API migrations, bug localization and triage, and predicting technical debt. Students will participate in an active learning approach by exercising and practicing code reviews, software testing tools, and quality frameworks.
3
 
LAS Immersion 2
3
 
Computer Science Electives
9
 
Science Elective ‡
3
Fifth Year
CSCI-499
Computer Science Undergraduate Co-op (fall)
Students perform professional work related to Computer Science for which they are paid. Students work full time during the term for which they are registered. Students must complete a student co-op work report for each term for which they are registered; students are also evaluated each term by their employer. A satisfactory grade is given for co-op when both a completed student co-op work report and a completed, corresponding employer evaluation are received and when both documents are generally consistent.
0
SWEN-732
Collaborative Software Development
This course covers processes, tools, and techniques for software development, in general, and collaborative, distributed software development, in particular. Students will learn how to design a process specific to their organization and development project needs. This includes how to select a software development life-cycle model, how to select and sequence the development and management activities of a collaborative, distributed software development team structure and dynamics, and how to define the work products, tools, and methods used to perform those activities. The Software Process Engineering Metamodel (SPEM, an Object Management Group standard) will serve to graphically describe, analyze, discuss, and improve software development processes. Special attention will be given to collaboration needs and approaches for small and large teams that may be globally distributed.
3
 
Computer Science Elective
3
 
LAS Immersion 3
3
 
LAS Elective
3
 
Free Elective
3
Sixth Year
SWEN-640
Research Methods
Overview of the academic research methodologies used in graduate level work. Topics include: Writing style, Audience analysis, Research Planning, Experiment design and result analysis, Document structure, Research validation, and the process for submission and review to conferences and journals. In this course the student will identify and develop a detailed thesis or capstone proposal that may be continued in a subsequent course. An in-depth 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 advisor and committee. The proposal is presented in a scholarly format for approval by the advisor and committee.
3
SWEN-745
Software Modeling
Modeling plays a pivotal role during the software lifecycle during the pre-construction and post-construction activities of the software lifecycle. During the pre-construction stage, models help software engineers understand, specify, and analyze software requirements and designs. During the post-construction 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
SWEN-755
Software Architecture
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 trade-offs among conflicting constraints, the documentation of architecture for use over a product’s life cycle, and the role of architecture during coding activities.
3
SWEN-790
Thesis
This course provides the student with an opportunity to execute a thesis project, analyze and document the project in thesis document form. An in-depth 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.
3
SWEN-799
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
 
Graduate Elective
3
Seventh Year
SWEN-790
Thesis
This course provides the student with an opportunity to execute a thesis project, analyze and document the project in thesis document form. An in-depth 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.
3
 
Graduate Elective
3
Total Semester Credit Hours
150

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 (PHYS-211) and University Physics II (PHYS-212); General and Analytical Chemistry I (CHMG-141), General and Analytical Chemistry I Lab (CHMG-145), General and Analytical Chemistry II (CHMG-142), and General and Analytical Chemistry II Lab (CHMG-146); or General Biology I (BIOL-101), General Biology I Lab (BIOL-103), General Biology II (BIOL-102), and General Biology II Lab (BIOL-104).

Ethical Perspective course must be chosen from PHIL-102, PHIL-202 or PHIL-306.

‡ 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.