Computer Science Bachelor of Science Degree

In RIT’s computer science degree, you’ll specialize in areas such as artificial intelligence, computer graphics, computer theory, networking, security, robotics, parallel computation, data mining, computer architecture, or systems software.


93%

Outcomes Rate of RIT Graduates from this degree

$96.4K

Average First-Year Salary of RIT Graduates from this degree


Overview for Computer Science BS

Why Study Computer Science at RIT?


  • Personalize Your Degree: Explore various areas within computer science, from artificial intelligence to computer security, tailoring your education to match your interests and career goals.

  • Comprehensive Skill Development: Gain proficiency not only in programming but also in problem-solving, analytical reasoning, and effective communication, essential qualities sought after by employers in today’s competitive job market.

  • Hands-On Learning Opportunities: Engage in significant programming, software development, and research projects, allowing you to apply theoretical concepts to real-world challenges and develop practical expertise.

  • Interdisciplinary Approach: Immerse yourself in a holistic educational experience, integrating mathematics, science, liberal arts, and technical skills, preparing you to excel in diverse career paths within the rapidly evolving field of computer science.

  • Accelerated Bachelor’s/Master’s Available: Earn both your bachelor’s and your master’s in less time and with a cost savings, giving you a competitive advantage in your field.

  • STEM-OPT Visa Eligible: The STEM Optional Practical Training (OPT) program allows full-time, on-campus international students on an F-1 student visa to stay and work in the U.S. for up to three years after graduation.

Computer science covers a wide spectrum of areas within the field of computing, ranging from theoretical to practical. As a computer scientist, you 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.

While programming is necessary, computer scientists must also be adaptable and adept at problem-solving and analytical reasoning, able to understand design principles, mathematical theory, and fluent technical applications of computer science. RIT prepares you to be well versed in all these aspects including programming because 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.

RIT’s Computer Science Degree

You will take a core of computer science courses that provide a solid foundation for advanced work. Building on this base, explore a variety of specializations in your third, fourth, and fifth years. In addition, you will develop a broad appreciation for computer applications and the effect of computers on society via program electives, general education courses, and various free electives, which can be used to complete a minor.

The computer science bachelor’s degree provides you with both a broad and deep foundation in theory and modern software and hardware concepts as well as introduces you to numerous programming languages and paradigms. RIT offers you the opportunity to engage in significant programming and software development work, or in both traditional and applied research.

In addition to required computer science BS courses, you may take computer science electives in areas such as architecture and operating systems; computer graphics and visualization; data management; distributed systems; artificial intelligence; languages and tools; security; and theory.

Students who graduate from our computer science degree are able to:

  1. Analyze a complex computing problem and apply principles of computing and other relevant disciplines to identify solutions.
  2. Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
  3. Communicate effectively in a variety of professional contexts.
  4. Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
  5. Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
  6. Apply computer science theory and software development fundamentals to produce computing-based solutions.
  7. Demonstrate advanced knowledge of a selected area within the computer science discipline.

Careers in Computer Science

Employers not only look for students who have strong technical skills, but who also understand mathematics, science, and the importance of effective communication. The computer science degree provides students with a solid foundation in mathematics, science, liberal arts and an opportunity to take outside electives, complementing the program's strong technical core.

Furthering Your Education in Computer Science

Combined Accelerated Bachelor’s/Master’s Degrees

Today’s careers require advanced degrees grounded in real-world experience. RIT’s Combined Accelerated Bachelor’s/Master’s Degrees enable you to earn both a bachelor’s and a master’s degree in as little as five years of study, all while gaining the valuable hands-on experience that comes from co-ops, internships, research, study abroad, and more.

  • Computer Science BS/Computer Science MSCombine a computer science BS degree with a master’s degree in computer science to prepare for careers in the rapidly growing and ever-changing field of computing. Start by gaining proficiency in programming as well as problem-solving, analytical reasoning, and effective communication, essential qualities sought after by employers in today’s competitive job market. You’ll specialize in areas such as artificial intelligence, computer graphics, computer theory, networking, security, robotics, parallel computation, data mining, computer architecture, or systems software. Then, during your graduate coursework you’ll tailor your degree to your interests including selecting a cluster of computer science courses that will help you reach your goals in a career you love. Some graduates pursue further education earning a Ph.D.
  • Computer Science BS/Cybersecurity MS: The BS/MS pathway in computer science and cybersecurity offers students a dynamic combination of broad computing knowledge and specialized security expertise. The BS in computer science lays a strong foundation in core computing principles, while the MS in cybersecurity provides in-depth training in digital defense strategies and securing systems. Through hands-on experience in state-of-the-art facilities like our Cyber Range, including executing penetration tests and vulnerability assessments, students gain practical skills highly valued by employers. Graduates of this accelerated 6-year program are uniquely positioned to become leaders in the high-demand, high-growth field of cybersecurity, with opportunities spanning from corporate IT security to government intelligence agencies.
  • Computer Science BS/Software Engineering MS: The BS/MS pathway in computer science and software engineering offers students a powerful blend of theoretical knowledge and practical application. The BS in computer science provides a broad foundation in computing, including areas like artificial intelligence and computer graphics. This is complemented by the MS in software engineering, which hones students' abilities in large-scale software development and innovation. This unique combination prepares graduates for leadership roles in the tech industry, from startups to major corporations. Through the program's focus on both traditional and applied research, students learn to not only use existing technologies but also to invent new ones. The accelerated 6-year timeline allows students to quickly position themselves at the forefront of software development, equipping them with the advanced skills and experience that employers highly value in today's rapidly evolving tech landscape.
  • +1 MBA: Students who enroll in a qualifying undergraduate degree have the opportunity to add an MBA to their bachelor’s degree after their first year of study, depending on their program. Learn how the +1 MBA can accelerate your learning and position you for success.
Loading...

Careers and Cooperative Education

Typical Job Titles

Associate Software Engineer Automation Engineer Developer
Full Stack Developer Programmer/Analyst QA Test Engineer
Senior Software Engineer Software Developer Software Engineer
Technology Analyst

Industries

  • Defense
  • Electronic and Computer Hardware
  • Health Care
  • Internet and Software
  • Research
  • Financial Services
Post-Graduation Salary and Career Info for Computer Science BS

Cooperative Education

What’s different about an RIT education? It’s the career experience you gain by completing cooperative education and internships with top companies in every single industry. You’ll earn more than a degree. You’ll gain real-world career experience that sets you apart. It’s exposure–early and often–to a variety of professional work environments, career paths, and industries. 

Co-ops and internships take your knowledge and turn it into know-how. Your computing co-ops will provide hands-on experience that enables you to apply your computing knowledge in professional settings while you make valuable connections between classwork and real-world applications.

Students in the computer science degree are required to complete three blocks of cooperative education experience.

Co-op and Experiential Learning Options for Computer Science BS

Featured Work and Profiles

Curriculum for 2024-2025 for Computer Science BS

Current Students: See Curriculum Requirements

Computer Science, BS degree, typical course sequence

Course Sem. Cr. Hrs.
First Year
CSCI-141
Computer Science I (General Education)
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. Lec/Lab 6 (Fall, Spring).
4
CSCI-142
Computer Science II (General Education)
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. (Prerequisites: CSCI-141 with a grade of C- or better or equivalent course.) Lec/Lab 6 (Fall, Spring, Summer).
4
MATH-181
Calculus I (General Education – Mathematical Perspective A)
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. (Prerequisites: MATH-111 or (NMTH-220 and NMTH-260 or NMTH-272 or NMTH-275) or equivalent courses with a minimum grade of B-, or a score of at least 60% on the RIT Mathematics Placement Exam.) Lecture 4 (Fall, Spring).
4
MATH-182
Calculus II (General Education – Mathematical Perspective B)
This is the second in a two-course sequence. 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. (Prerequisites: C- or better in MATH-181 or MATH-181A or equivalent course.) Lecture 4 (Fall, Spring).
4
MATH-190
Discrete Mathematics for Computing (General Education)
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. (Co-requisites: MATH-182 or MATH-182A or MATH-172 or equivalent courses.) Lecture 3, Recitation 1 (Fall, Spring).
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. (This class is restricted to incoming 1st year or global campus students.) Lecture 1 (Fall, Spring).
0
 
General Education – Ethical Perspective
3
 
General Education – Artistic Perspective
3
 
General Education – Global Perspective
3
 
General Education – Social Perspective
3
 
General Education – First-Year Writing (WI)
3
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. The seminar will also review various curricular options and program requirements for CS undergraduate students. (Prerequisites: This class is restricted to COMPSCI-BS or COMPEX-UND Major students with at least 2nd year standing.) Lecture 1 (Fall, Spring).
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. (Prerequisite: C- or better in CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124 or GCIS-127 or equivalent course.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-488
Undergraduate Summer Co-op
Students perform professional work related to Computer Science for which they are paid. 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Summer).
0
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. (Prerequisites:(CSCI-243 and (CSCI-262 or CSCI-263)) or (SWEN-262 and MATH-241) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
 
   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. (Prerequisites: (CSCI-243 and (CSCI-262 or CSCI-263)) or (SWEN-262 and MATH-241 or equivalent courses.) Lecture 3 (Fall).
 
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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-141 or CSCI-242 or SWEN-123 or SWEN-124 or CSECI-123 or CSEC-124 or GCIS-123 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
 
   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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-141 or CSCI-242 or SWEN-123 or SWEN-124 or CSECI-123 or CSEC-124 or GCIS-123 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall).
 
MATH-241
Linear Algebra (General Education)
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. (Prerequisites: MATH-190 or MATH-200 or MATH-219 or MATH-220 or MATH-221 or MATH-221H or equivalent course.) Lecture 3 (Fall, Spring).
3
MATH-251
Probability and Statistics I (General Education)
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. (Prerequisites: MATH-173 or MATH-182 or MATH 182A or equivalent course.) Lecture 3, Recitation 1 (Fall, Spring, Summer).
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. (Prerequisite: CSCI-140 or CSCI-142 or CSCI-242 or GCIS-124 or GCIS-127 or SWEN-124 or CSEC-124 or ISTE-124 or IGME-106 or equivalent course.) Lec/Lab 3 (Fall, Spring).
3
 
General Education – Natural Science Inquiry Perspective†
4
 
General Education – Scientific Principles Perspective
3
 
General Education – Elective†
4
 
General Education – Elective
3
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. (Prerequisites: (CSCI-243 or 4003-334) and (MATH-190 or MATH-200 or 1016-366) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-331
Introduction to Artificial Intelligence
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. (Prerequisites: (CSCI-243 or SWEN-262) and (MATH-251 or STAT-205) or equivalent courses. Students cannot take and receive credit for this course if they have taken CSCI-630.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-499
Computer Science Undergraduate Co-op (spring)
Students perform professional work related to Computer Science for which they are paid. 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Fall, Spring).
0
 
Open Elective
3
 
General Education – Immersion 1 (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. (Prerequisites: CSCI-243 or SWEN-262 or equivalent courses.) Lecture 3 (Fall, Spring).
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. (Prerequisites: CSCI-243 or SWEN-250 or IGME-309 or 4003-334 or 4010-361 or 4080-487) and (MATH-190 or MATH-200) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-472
Historical & Current Perspectives in Computer Science (WI-PR)
Students who have a background in Computer Science theories, algorithms, and data structures will be provided a look at the history of Computer Science from historical and current perspectives. Topics include an early history of Computer Science, a study of the people who shaped Computer Science, and a discussion of major milestones in Computer Science. Additionally, students will study current issues in Computer Science, including legal, ethical, diversity, equity, inclusion, accessibility and privacy issues, and how past issues affect modern designs and decision making by computer scientists. Students will be required to work in teams on several assignments. Papers, presentations, and oral presentations are required. Students cannot take and receive credit for this course if they have credit for CSCI-471. (Prerequisites: This class is restricted to students with at least 4th year standing.) Lecture 3 (Fa/sp/su).
3
 
Open Electives
9
 
CS Electives
6
 
CS Elective‡
3
 
General Education – Immersion 2
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 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Fall, Spring).
0
 
CS Elective‡
3
 
General Education – Immersion 3
3
 
General Education – Elective
3
 
Open Electives
6
Total Semester Credit Hours
126

Please see General Education Curriculum (GE) 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 (PHYS-211, 212); (b) General & Analytical Chemistry I, II and Labs (CHMG-141, 142, 145, 146); or (c) General Biology I, II, and Labs (BIOL-101, 102, 103, 104). 

‡ Two computer science elective courses must come from the same CS cluster.

Combined Accelerated Bachelor's/Master's Degrees

The curriculum below outlines the typical course sequence(s) for combined accelerated degrees available with this bachelor's degree.

Computer Science, BS/MS degree, typical course sequence

Course Sem. Cr. Hrs.
First Year
CSCI-141
Computer Science I (General Education)
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. Lec/Lab 6 (Fall, Spring).
4
CSCI-142
Computer Science II (General Education)
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. (Prerequisites: CSCI-141 with a grade of C- or better or equivalent course.) Lec/Lab 6 (Fall, Spring, Summer).
4
MATH-181
Calculus I (General Education – Mathematical Perspective A)
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. (Prerequisites: MATH-111 or (NMTH-220 and NMTH-260 or NMTH-272 or NMTH-275) or equivalent courses with a minimum grade of B-, or a score of at least 60% on the RIT Mathematics Placement Exam.) Lecture 4 (Fall, Spring).
4
MATH-182
Calculus II (General Education – Mathematical Perspective B)
This is the second in a two-course sequence. 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. (Prerequisites: C- or better in MATH-181 or MATH-181A or equivalent course.) Lecture 4 (Fall, Spring).
4
MATH-190
Discrete Mathematics for Computing (General Education)
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. (Co-requisites: MATH-182 or MATH-182A or MATH-172 or equivalent courses.) Lecture 3, Recitation 1 (Fall, Spring).
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. (This class is restricted to incoming 1st year or global campus students.) Lecture 1 (Fall, Spring).
0
 
General Education – Ethical Perspective
3
 
General Education – Artistic Perspective
3
 
General Education – Global Perspective
3
 
General Education – Social Perspective
3
 
General Education – First Year Writing (WI)
3
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. The seminar will also review various curricular options and program requirements for CS undergraduate students. (Prerequisites: This class is restricted to COMPSCI-BS or COMPEX-UND Major students with at least 2nd year standing.) Lecture 1 (Fall, Spring).
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. (Prerequisite: C- or better in CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124 or GCIS-127 or equivalent course.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-488
CS Undergraduate Summer Co-op (summer)
Students perform professional work related to Computer Science for which they are paid. 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Summer).
0
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. (Prerequisites:(CSCI-243 and (CSCI-262 or CSCI-263)) or (SWEN-262 and MATH-241) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
 
   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. (Prerequisites: (CSCI-243 and (CSCI-262 or CSCI-263)) or (SWEN-262 and MATH-241 or equivalent courses.) Lecture 3 (Fall).
 
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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-141 or CSCI-242 or SWEN-123 or SWEN-124 or CSECI-123 or CSEC-124 or GCIS-123 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
 
   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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-141 or CSCI-242 or SWEN-123 or SWEN-124 or CSECI-123 or CSEC-124 or GCIS-123 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall).
 
MATH-241
Linear Algebra (General Education)
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. (Prerequisites: MATH-190 or MATH-200 or MATH-219 or MATH-220 or MATH-221 or MATH-221H or equivalent course.) Lecture 3 (Fall, Spring).
3
MATH-251
Probability and Statistics (General Education)
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. (Prerequisites: MATH-173 or MATH-182 or MATH 182A or equivalent course.) Lecture 3, Recitation 1 (Fall, Spring, Summer).
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. (Prerequisite: CSCI-140 or CSCI-142 or CSCI-242 or GCIS-124 or GCIS-127 or SWEN-124 or CSEC-124 or ISTE-124 or IGME-106 or equivalent course.) Lec/Lab 3 (Fall, Spring).
3
 
General Education – Natural Science Inquiry Perspective: Lab Science I †
4
 
General Education – Scientific Principles Perspective
3
 
General Education – Elective: Lab Science II †
4
 
General Education – Elective
3
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. (Prerequisites: (CSCI-243 or 4003-334) and (MATH-190 or MATH-200 or 1016-366) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-331
Introduction to Artificial Intelligence
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. (Prerequisites: (CSCI-243 or SWEN-262) and (MATH-251 or STAT-205) or equivalent courses. Students cannot take and receive credit for this course if they have taken CSCI-630.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-499
Computer Science Undergraduate Co-op (spring)
Students perform professional work related to Computer Science for which they are paid. 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Fall, Spring).
0
 
Open Elective
3
 
General Education – Immersion 1 (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. (Prerequisites: CSCI-243 or SWEN-262 or equivalent courses.) Lecture 3 (Fall, Spring).
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. (Prerequisites: CSCI-243 or SWEN-250 or IGME-309 or 4003-334 or 4010-361 or 4080-487) and (MATH-190 or MATH-200) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-472
Historical and Current Perspectives in Computer Science (WI-PR)
Students who have a background in Computer Science theories, algorithms, and data structures will be provided a look at the history of Computer Science from historical and current perspectives. Topics include an early history of Computer Science, a study of the people who shaped Computer Science, and a discussion of major milestones in Computer Science. Additionally, students will study current issues in Computer Science, including legal, ethical, diversity, equity, inclusion, accessibility and privacy issues, and how past issues affect modern designs and decision making by computer scientists. Students will be required to work in teams on several assignments. Papers, presentations, and oral presentations are required. Students cannot take and receive credit for this course if they have credit for CSCI-471. (Prerequisites: This class is restricted to students with at least 4th year standing.) Lecture 3 (Fa/sp/su).
3
 
Open Electives
9
 
CS Electives‡
9
 
General Education – Immersion 2
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 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Fall, Spring).
0
 
CS Elective‡
3
 
General Education – Immersion 3
3
 
General Education – Elective
3
 
Open Electives
6
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. (Prerequisite: (CSCI-603 or CSCI-605 with a grade of B or better) or (CSCI-243 or SWEN-262). May not take and receive credit for CSCI-610 and CSCI-510. If earned credit for/or currently enrolled in CSCI-510 you will not be permitted to enroll in CSCI-610.) Lecture 3 (Fall, Spring).
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. (Prerequisites:(CSCI-603 and CSCI-605 and CSCI-661 with grades of B or better) or ((CSCI-243 or SWEN-262) and (CSCI-262 or CSCI-263)) or equiv courses. If earned credit for/or currently enrolled in CSCI-431 you will not be permitted to enroll in CSCI-631.Prerequisites:(CSCI-603 and CSCI-605 and CSCI-661 with grades of B or better) or ((CSCI-243 or SWEN-262) and (CSCI-262 or CSCI-263)) or equiv courses. If earned credit for/or currently enrolled in CSCI-431 you will not be permitted to enroll in CSCI-631.) Lecture 3 (Fall, Spring).
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. (Prerequisites: (CSCI-661 or CSCI-660 or CSCI-262 or CSCI-263) and (CSCI-665 or CSCI-261 or CSCI-264) or equivalent courses.) Lecture 3 (Spring).
3
CSCI-799
Computer Science Graduate 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. (Enrollment in this course requires permission from the department offering the course.) Ind Study (Fall, Spring, Summer).
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. (Enrollment in this course requires permission from the department offering the course.) Thesis (Fall, Spring, Summer).
6
Total Semester Credit Hours
147§

Please see General Education Curriculum (GE) 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 (PHYS-211, 212); (b) General & 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 open 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.

§ 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/Cybersecurity, MS degree, typical course sequence

Course Sem. Cr. Hrs.
First Year
CSCI-141
Computer Science I (General Education)
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. Lec/Lab 6 (Fall, Spring).
4
CSCI-142
Computer Science II (General Education)
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. (Prerequisites: CSCI-141 with a grade of C- or better or equivalent course.) Lec/Lab 6 (Fall, Spring, Summer).
4
MATH-181
Calculus I (General Education – Mathematical Perspective A)
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. (Prerequisites: MATH-111 or (NMTH-220 and NMTH-260 or NMTH-272 or NMTH-275) or equivalent courses with a minimum grade of B-, or a score of at least 60% on the RIT Mathematics Placement Exam.) Lecture 4 (Fall, Spring).
4
MATH-182
Calculus II (General Education – Mathematical Perspective B)
This is the second in a two-course sequence. 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. (Prerequisites: C- or better in MATH-181 or MATH-181A or equivalent course.) Lecture 4 (Fall, Spring).
4
MATH-190
Discrete Mathematics for Computing (General Education)
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. (Co-requisites: MATH-182 or MATH-182A or MATH-172 or equivalent courses.) Lecture 3, Recitation 1 (Fall, Spring).
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. (This class is restricted to incoming 1st year or global campus students.) Lecture 1 (Fall, Spring).
0
 
General Education – Ethical Perspective
3
 
General Education – Artistic Perspective
3
 
General Education – Global Perspective
3
 
General Education – Social Perspective
3
 
General Education – First Year Writing (WI)
3
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. The seminar will also review various curricular options and program requirements for CS undergraduate students. (Prerequisites: This class is restricted to COMPSCI-BS or COMPEX-UND Major students with at least 2nd year standing.) Lecture 1 (Fall, Spring).
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. (Prerequisite: C- or better in CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124 or GCIS-127 or equivalent course.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-488
Computer Science Undergraduate Co-op (summer)
Students perform professional work related to Computer Science for which they are paid. 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Summer).
0
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. (Prerequisites:(CSCI-243 and (CSCI-262 or CSCI-263)) or (SWEN-262 and MATH-241) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
 
   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. (Prerequisites: (CSCI-243 and (CSCI-262 or CSCI-263)) or (SWEN-262 and MATH-241 or equivalent courses.) Lecture 3 (Fall).
 
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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-141 or CSCI-242 or SWEN-123 or SWEN-124 or CSECI-123 or CSEC-124 or GCIS-123 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
 
   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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-141 or CSCI-242 or SWEN-123 or SWEN-124 or CSECI-123 or CSEC-124 or GCIS-123 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall).
 
MATH-241
Linear Algebra (General Education)
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. (Prerequisites: MATH-190 or MATH-200 or MATH-219 or MATH-220 or MATH-221 or MATH-221H or equivalent course.) Lecture 3 (Fall, Spring).
3
MATH-251
Probability and Statistics (General Education)
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. (Prerequisites: MATH-173 or MATH-182 or MATH 182A or equivalent course.) Lecture 3, Recitation 1 (Fall, Spring, Summer).
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. (Prerequisite: CSCI-140 or CSCI-142 or CSCI-242 or GCIS-124 or GCIS-127 or SWEN-124 or CSEC-124 or ISTE-124 or IGME-106 or equivalent course.) Lec/Lab 3 (Fall, Spring).
3
 
General Education – Natural Science Inquiry Perspective: Lab Science I †
4
 
General Education- Scientific Principles Perspective
3
 
General Education – Elective: Lab Science II †
4
 
General Education – Elective
3
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. (Prerequisites: (CSCI-243 or 4003-334) and (MATH-190 or MATH-200 or 1016-366) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-331
Introduction to Artificial Intelligence
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. (Prerequisites: (CSCI-243 or SWEN-262) and (MATH-251 or STAT-205) or equivalent courses. Students cannot take and receive credit for this course if they have taken CSCI-630.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-499
Computer Science Undergraduate Co-op (spring)
Students perform professional work related to Computer Science for which they are paid. 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Fall, Spring).
0
 
Open Elective
3
 
General Education – Immersion 1 (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. (Prerequisites: CSCI-243 or SWEN-262 or equivalent courses.) Lecture 3 (Fall, Spring).
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. (Prerequisites: CSCI-243 or SWEN-250 or IGME-309 or 4003-334 or 4010-361 or 4080-487) and (MATH-190 or MATH-200) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-472
Historical and Current Perspectives in Computer Science (WI-PR)
Students who have a background in Computer Science theories, algorithms, and data structures will be provided a look at the history of Computer Science from historical and current perspectives. Topics include an early history of Computer Science, a study of the people who shaped Computer Science, and a discussion of major milestones in Computer Science. Additionally, students will study current issues in Computer Science, including legal, ethical, diversity, equity, inclusion, accessibility and privacy issues, and how past issues affect modern designs and decision making by computer scientists. Students will be required to work in teams on several assignments. Papers, presentations, and oral presentations are required. Students cannot take and receive credit for this course if they have credit for CSCI-471. (Prerequisites: This class is restricted to students with at least 4th year standing.) Lecture 3 (Fa/sp/su).
3
CSEC-600
Open Elective: Introduction to Computing Security
This is a graduate level introduction to the field of computing security. An extensive overview of various branches of computing security areas will be presented including concepts, issues, and tools that are critical in solving problems in computing security domain. Students will have opportunities to learn essential techniques in protecting systems and network infrastructures, analyzing and monitoring potential threats and attacks, devising and implementing security solutions for organizations large or small. Lec/Lab 3 (Fall).
3
 
Open Elective
3
 
Open Elective/CSEC Graduate Elective
3
 
CS Electives
9
 
General Education – Immersion 2
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 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Fall, Spring).
0
 
CS Elective
3
 
General Education – Immersion 3
3
 
General Education – Elective
3
 
Open Electives/CSEC Graduate Elective
6
Sixth Year
CSEC-604
Cryptography and Authentication
In this course, students will gain in depth knowledge of cryptography and authentication. Students will explore various cryptographic algorithms and authentication protocols, focusing on their design and implementation. Students will also work on a research or implementation project, based on cryptographic algorithms and/or authentication protocols. The applications of cryptography and authentication in the areas of computer networks and systems will also be investigated. This course requires prior knowledge in Discrete Mathematics. (Prerequisites: (MATH-190 and BS/MS students in Computing Security) or students matriculated in the COMPSEC-MS program.) Lecture 3 (Fall).
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. (Prerequisites: CSEC-600 or equivalent course. This course is restricted to BS/MS students in Computing Security and students in the COMPSEC-MS program.) Lab 2, Lecture 3 (Fall).
3
 
CSEC Graduate Elective
3
 
CSEC Research Electives
6
Choose one of the following culminating experiences:
6
   CSEC-790
 MS Thesis
This course is one of the capstone options in the MS in Computing Security program. It offers students the opportunity to investigate a selected topic and make an original contribution which extends knowledge within the computing security domain. Students must submit an acceptable proposal to a thesis committee (chair, reader, and observer) before they may be registered by the department for the MS Thesis. Students must defend their work in an open thesis defense and complete a written report of their work before a pass/fail grade is awarded. As part of their original work, students are expected to write and submit an article for publication in a peer reviewed journal or conference. (Enrollment in this course requires permission from the department offering the course.) Thesis (Fall, Spring, Summer).
 
 
 CSEC Research Elective, plus one (1) additional CSEC Graduate Elective
 
Total Semester Credit Hours
147

Please see General Education Curriculum (GE) 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 (PHYS-211, 212); (b) General & 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 open to choose from approved science electives that either extend or complement their lab science selection.

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. Lec/Lab 6 (Fall, Spring).
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. (Prerequisites: CSCI-141 with a grade of C- or better or equivalent course.) Lec/Lab 6 (Fall, Spring, Summer).
4
MATH-181
Calculus I (General Education – Mathematical Perspective A)
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. (Prerequisites: MATH-111 or (NMTH-220 and NMTH-260 or NMTH-272 or NMTH-275) or equivalent courses with a minimum grade of B-, or a score of at least 60% on the RIT Mathematics Placement Exam.) Lecture 4 (Fall, Spring).
4
MATH-182
Calculus II (General Education – Mathematical Perspective B)
This is the second in a two-course sequence. 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. (Prerequisites: C- or better in MATH-181 or MATH-181A or equivalent course.) Lecture 4 (Fall, Spring).
4
MATH-190
Discrete Mathematics for Computing (General Education – Elective)
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. (Co-requisites: MATH-182 or MATH-182A or MATH-172 or equivalent courses.) Lecture 3, Recitation 1 (Fall, Spring).
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. (This class is restricted to incoming 1st year or global campus students.) Lecture 1 (Fall, Spring).
0
 
General Education – First Year Writing (WI)
3
 
General Education – Ethical Perspective
3
 
General Education – Artistic Perspective
3
 
General Education – Global Perspective
3
 
General Education – Social Perspective
3
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. The seminar will also review various curricular options and program requirements for CS undergraduate students. (Prerequisites: This class is restricted to COMPSCI-BS or COMPEX-UND Major students with at least 2nd year standing.) Lecture 1 (Fall, Spring).
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. (Prerequisite: C- or better in CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124 or GCIS-127 or equivalent course.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-488
CS Undergraduate Summer Co-op (summer)
Students perform professional work related to Computer Science for which they are paid. 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Summer).
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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-141 or CSCI-242 or SWEN-123 or SWEN-124 or CSECI-123 or CSEC-124 or GCIS-123 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
 
    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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-141 or CSCI-242 or SWEN-123 or SWEN-124 or CSECI-123 or CSEC-124 or GCIS-123 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall).
 
MATH-241
Linear Algebra (General Education – Elective)
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. (Prerequisites: MATH-190 or MATH-200 or MATH-219 or MATH-220 or MATH-221 or MATH-221H or equivalent course.) Lecture 3 (Fall, Spring).
3
MATH-251
Probability and Statistics (General Education – Elective)
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. (Prerequisites: MATH-173 or MATH-182 or MATH 182A or equivalent course.) Lecture 3, Recitation 1 (Fall, Spring, Summer).
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. (Prerequisites:(CSCI-243 and (CSCI-262 or CSCI-263)) or (SWEN-262 and MATH-241) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
 
   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. (Prerequisites: (CSCI-243 and (CSCI-262 or CSCI-263)) or (SWEN-262 and MATH-241 or equivalent courses.) Lecture 3 (Fall).
 
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. (Prerequisite: CSCI-140 or CSCI-142 or CSCI-242 or GCIS-124 or GCIS-127 or SWEN-124 or CSEC-124 or ISTE-124 or IGME-106 or equivalent course.) Lec/Lab 3 (Fall, Spring).
3
 
General Education – Elective
3
 
General Education – Natural Science Perspective: Lab Science I†
4
 
General Education – Elective: Lab Science II†
4
 
General Education – Scientific Principles Perspective
3
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. (Prerequisites: (CSCI-243 or 4003-334) and (MATH-190 or MATH-200 or 1016-366) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
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. (Prerequisites: (MATH-190 or MATH-200) and (CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124 or GCIS-127) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-331
Introduction to Artificial Intelligence
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. (Prerequisites: (CSCI-243 or SWEN-262) and (MATH-251 or STAT-205) or equivalent courses. Students cannot take and receive credit for this course if they have taken CSCI-630.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-499
Computer Science Undergraduate Co-op (spring)
Students perform professional work related to Computer Science for which they are paid. 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Fall, Spring).
0
 
General Education – Immersion 1 (WI)
3
 
Open Elective
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. (Prerequisites: CSCI-243 or SWEN-262 or equivalent courses.) Lecture 3 (Fall, Spring).
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. (Prerequisites: CSCI-243 or SWEN-250 or IGME-309 or 4003-334 or 4010-361 or 4080-487) and (MATH-190 or MATH-200) or equivalent courses.) Lecture 3 (Fall, Spring, Summer).
3
CSCI-472
Historical & Current Perspectives in Computer Science (WI-PR)
Students who have a background in Computer Science theories, algorithms, and data structures will be provided a look at the history of Computer Science from historical and current perspectives. Topics include an early history of Computer Science, a study of the people who shaped Computer Science, and a discussion of major milestones in Computer Science. Additionally, students will study current issues in Computer Science, including legal, ethical, diversity, equity, inclusion, accessibility and privacy issues, and how past issues affect modern designs and decision making by computer scientists. Students will be required to work in teams on several assignments. Papers, presentations, and oral presentations are required. Students cannot take and receive credit for this course if they have credit for CSCI-471. (Prerequisites: This class is restricted to students with at least 4th year standing.) Lecture 3 (Fa/sp/su).
3
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. (Prerequisites: (SOFTENG-U or CSCISWEN-U or SOFTENG-MS students) and ((SWEN-601 and SWEN-610) or (SWEN-261) or equivalent courses).) Lecture 3 (Fall).
3
SWEN-746
Model-Driven Development
Software models help the software engineer to understand, specify, and analyze software requirements, designs, and implementations (code components, databases, support files, etc.). Model-driven development is a software engineering practice that uses tool-enabled transformation of requirements models to design models and then to code and associated implementation artifacts. Students will use the Unified Modeling Language (UML) and other modeling techniques to capture software requirements, designs, and implementations. Students will also use formal modeling methods to semi-automatically transform among the various models and to study the quality attributes of the modeled software, such as performance, reliability, security, and other qualities. (Co-requisites: (SOFTENG-U or CSCISWEN-U or SOFTENG-MS students) and ((SWEN-601 and SWEN-610) or (SWEN-261)) or equivalent courses.) Lecture 3 (Fall).
3
 
General Education – Immersion 2
3
 
Computer Science Elective
3
 
Open Electives
9
Fifth Year
CSCI-499
Computer Science Undergraduate Co-op (fall)
Students perform professional work related to Computer Science for which they are paid. 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. When registered for co-op, students are considered by RIT to have full-time status. In order to register for co-op for either fall or spring semester, we expect that students will work a minimum of 14 weeks and work a minimum of 35 hours per week. (Prerequisite: CSCI-099 or equivalent course.) CO OP (Fall, Spring).
0
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. (Prerequisites: (SOFTENG-U or CSCISWEN-U or SOFTENG-MS students) and ((SWEN-601 and SWEN-610) or (SWEN-261) or equivalent courses).) Lecture 3 (Spring).
3
 
General Education – Immersion 3
3
 
General Education – Elective
3
 
Open Electives
6
Sixth Year
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. (Prerequisites: (SOFTENG-U or CSCISWEN-U or SOFTENG-MS students) and ((SWEN-601 and SWEN-610) or (SWEN-261) or equivalent courses).) Lecture 3 (Fall).
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. (Prerequisites: (SOFTENG-U or CSCISWEN-U or SOFTENG-MS students) and ((SWEN-601 and SWEN-610) or (SWEN-261) or equivalent courses).) Lecture 3 (Spring).
3
SWEN-780
Graduate Capstone
This course provides the student with an opportunity to explore a project-based research experience that advances knowledge in that area. The student selects a research problem, conducts background research, develops the system, analyses the results, and builds a professional document and presentation that disseminates the project. The report must include an in-depth research report on a topic selected by the student and in agreement with the student's adviser. The report must be structured as a conference paper, and must be submitted to a conference selected by the student and his/her adviser. (Enrollment in this course requires permission from the department offering the course.) Lec/Lab 6 (Fall, Spring, Summer).
3
 
CSCI Graduate Cluster Elective
6
 
CSCI Graduate Elective
3
Choose one of the following SWEN Graduate Electives: 
3
   SWEN-614
 Engineering Cloud Software Systems
The course focuses on designing and implementing applications using cloud software systems infrastructure and technologies. The course introduces the basic concept and knowledge on cloud computing systems and application infrastructure. It also contains brief introductions on key technologies and paradigms related to developing big data applications in the cloud. The course also includes student-led case studies of cloud computing applications in different application domains, e.g., healthcare, financial, IoT (Internet of Things), and so on. The course contains a set of related topics which are covered via hands-on class instruction, application development in teams, course materials, and class discussions. Programming projects and demo presentations are required. (Prerequisites: (SOFTENG-U or CSCISWEN-U or SOFTENG-MS students) and ((SWEN-601 and SWEN-610) or (SWEN-261) or equivalent courses).) Lec/Lab 3 (Fall).
 
   SWEN-711
 Engineering Self-Adaptive Software Systems With Reinforcement Learning
This course introduces beginning graduate students to key concepts and techniques underlying the engineering of self-adaptive and autonomic software systems. Such software systems are capable of self-management, self-healing, self-tuning, self-configuration and self-protection. The course content includes an introduction of self-adaptive software systems and defines their characteristics. This will be followed by foundational engineering principles and methodology for achieving self-adaptive systems – feedback control, modeling, machine learning, and systems concepts. Selected seminal research paper reading and a term-long project will also be covered in the class. (Prerequisites: (SOFTENG-U or CSCISWEN-U or SOFTENG-MS students) and ((SWEN-601 and SWEN-610) or (SWEN-261) or equivalent courses).) Lecture 3 (Fall).
 
Total Semester Credit Hours
147

Please see General Education Curriculum (GE) 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 & Analytical Chemistry I (CHMG-141), General & Analytical Chemistry I Lab (CHMG-145), General & Analytical Chemistry II (CHMG-142), and General & 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).

Admissions and Financial Aid

This program is STEM designated when studying on campus and full time.

First-Year Admission

A strong performance in a college preparatory program is expected. This includes:

  • 4 years of English
  • 3 years of social studies and/or history
  • 4 years of mathematics is required and must include algebra, geometry, algebra 2/trigonometry, and pre-calculus. Calculus is preferred.
  • 2-3 years of science is required and must include chemistry or physics; both are preferred.
  • Computing electives are preferred.

Transfer Admission

Transfer course recommendations without associate degree
Courses in computer science, calculus, liberal arts; calculus-based physics, chemistry, or biology

Appropriate associate degree programs for transfer
AS degree in computer science, engineering science, or liberal arts

Learn How to Apply

Financial Aid and Scholarships

100% of all incoming first-year and transfer students receive aid.

RIT’s personalized and comprehensive financial aid program includes scholarships, grants, loans, and campus employment programs. When all these are put to work, your actual cost may be much lower than the published estimated cost of attendance.
Learn more about financial aid and scholarships

Accreditation

The BS degree in Computer Science is accredited by the Computing Accreditation Commission of ABET, http://www.abet.org, under the General Criteria and the Computer Science Program Criteria.

Related News

  • November 8, 2024

    An illustration of a brain with the words Science Advances displayed over the top in white, all on a dark blue background.

    RIT professor proposes new way to make artificial intelligence smarter and greener

    The brain is a great source of inspiration for Alexander Ororbia, an assistant professor of computer science and cognitive science at RIT. By mimicking how neurons in the brain learn, Ororbia is working to make artificial intelligence more powerful and energy efficient. His research was recently published in the journal Science Advances.

  • October 29, 2024

    a man in a brown tshirt and a man in a blue tshirt hold a laptop together in front of a mural of a tiger in the R I T Tunnel system.

    RIT students raise awareness about mural art through TunnelVision

    Students are bringing mural art into the spotlight through TunnelVision, an immersive project designed to engage and inspire. The initiative transforms the residence hall tunnels into a vibrant gallery, showcasing student-created murals. It aims to foster community and spark conversations about public art on campus.

  • August 23, 2024

    Students throw paper planes with their dreams to end the Fall Convocation for New Students

    RIT students urged to launch dreams in their new journeys

    More than 3,100 new RIT students got their official welcome Thursday, first parading past cheering faculty and staff in the annual Tiger Walk, then in the Gordon Field House and Activities Center for some friendly advice during this year’s Fall Convocation for New Students.

Contact

Program Contact
  • Zachary Butler
  • Professor
  • Department of Computer Science
  • Golisano College of Computing and Information Sciences
  • 585‑475‑6155
  • zxbvcs@rit.edu
Offered within the
Department of Computer Science