Software Engineering bachelor of science degree

dfa1b709-dde6-4686-850d-908a45d99ba0 | 128915

Overview

Encompasses technical issues affecting software architecture, design, and implementation as well as process issues that address project management, planning, quality assurance, and product maintenance.


As software becomes ever more common in everything from airplanes to appliances, there is an increasing demand for engineering professionals who can develop high-quality, cost-effective software systems. The BS in software engineering combines traditional computer science and engineering with specialized course work in software engineering. The software engineering degree encompasses technical issues affecting software architecture, design, and implementation as well as process issues that address project management, planning, quality assurance, and product maintenance. Students are prepared for immediate employment and long-term professional growth in a range of software development organizations.

Students learn principles, methods, and techniques for the construction of complex and evolving software systems. The major encompasses technical issues affecting software architecture, design, and implementation as well as process issues that address project management, planning, quality assurance, and product maintenance. Upon graduation, students are prepared for immediate employment and long-term professional growth in software development organizations.

Plan of study

An important component of the curriculum is the complementary course work in related disciplines. As with other engineering fields, mathematics and the natural sciences are fundamental. In addition, students must complete courses in related fields of engineering, business, or science. Two engineering electives, plus a three-course sequence in an application domain, enable students to connect software engineering principles to application areas. A required course in economics or finance bridges software engineering with the realities of the business environment.

Students also complete general education courses in the liberal arts to develop a sense of professionalism and social responsibility in the technical world.

Electives

Engineering electives

Students may choose engineering electives from software engineering, computer science, or majors in the Kate Gleason College of Engineering. Additional rules and restrictions are listed on the department website.

Application domain courses

An application domain is a set of three courses that expose students to an area in which software engineering is often applied. There are standard predefined application domains and students are free to suggest a customized domain. Example application domain areas include artificial intelligence, bioinformatics, business applications, computational mathematics, computer engineering, computing security, economics, entrepreneurship, industrial and systems engineering, interactive entertainment, public policy, scientific and engineering computing, statistics, or usability.

Senior design project

A two-course senior design project helps students synthesize and apply the knowledge and experience they have gained in classes and on co-op assignments to an industry-sponsored project. Organizations with challenging technical problems frequently contact faculty seeking assistance in defining a solution. Many of these issues find their resolution via the work of the senior project teams.

In the first course, students organize themselves into teams, based on the number and complexity of the projects available. The bulk of the semester is devoted to requirements elicitation and architectural design, but also may include detailed design, prototyping, and even production, depending on the nature of the project. In addition, teams are responsible for assigning specific roles to team members and developing a project plan that includes scheduled concrete milestones. In the second course, students work on the tactical issues of development and deployment. Teams complete the construction and integration of their project, conduct testing, and demonstrate the final outcome to faculty and the sponsoring organization.

Organizations that have sponsored senior projects include Wegmans, Paychex, Moog, Northrup Grumman Security Systems, Intel Corp., Webster Financial Group, Oracle, Nokia, IBM Thomas Watson Research, PaeTec Communications, Alstom Signaling Inc., RIT Information and Technology Services, Harris Corporation (RF Communications Division), the Air Force Research Laboratory, Excellus Blue Cross Blue Shield, Telecom Consulting Group NE Corp. (TCN), and Videk.

Cooperative education

Students are required to complete 40 weeks of cooperative education prior to graduation. Students typically begin co-op in their third year of study, alternating semesters of study on campus with co-op blocks. To ensure that co-op is integrated with the curriculum, students must complete their final co-op block prior to taking Software Engineering Project I (SWEN-561).

Accreditation

The bachelor of science in software engineering is accredited by the Engineering Accreditation Commission of ABET, http://www.abet.org.

Industries


  • Internet and Software

  • Defense

  • Electronic and Computer Hardware

  • Other Industries

Typical Job Titles

Software Engineer Software Developer
Software Quality Assurance Engineer Web Applications Developer
Data Analyst Software Tester
Database Developer Software Design Engineer
Software Requirements Engineer Web Developer
Programmer

98%

outcome rate of graduates

$83k

median first-year salary of graduates

Latest News

Curriculum

Software engineering, BS degree, typical course sequence

Course Sem. Cr. Hrs.
First Year
CSCI-141
Computer Science I
This course serves as an introduction to computational thinking using a problem-centered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments (both in class and for homework) requiring a pseudo code solution and an implementation are an integral part of the course. An end-of-term project is also required.
4
CSCI-142
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of object-oriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary object-oriented design patterns. Input and output streams, graphical user interfaces, and exception handling are covered. Students will also be introduced to a modern integrated software development environment (IDE). Programming projects will be required.
4
MATH-181
LAS Perspective 7A: Project-based Calculus I
This is the first in a two-course sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers functions, limits, continuity, the derivative, rules of differentiation, applications of the derivative, Riemann sums, definite integrals, and indefinite integrals.
4
MATH-182
LAS Perspective 7B: Project-based Calculus II
This is the second in a two-course sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers techniques of integration including integration by parts, partial fractions, improper integrals, applications of integration, representing functions by infinite series, convergence and divergence of series, parametric curves, and polar coordinates.
4
SWEN-101
Freshman Seminar
Provides first-year students with the skills necessary to succeed at RIT and in the software engineering program. Small group sessions are used to help new students make friends, create a stronger bond with RIT and their program and become acquainted with the campus and its facilities. In addition, students are introduced to the profession of software engineering and to ethical issues they will face at RIT and throughout their careers.
1
MATH-190
Discrete Mathematics for Computing
This course introduces students to ideas and techniques from discrete mathematics that are widely used in Computer Science. Students will learn about the fundamentals of propositional and predicate calculus, set theory, relations, recursive structures and counting. This course will help increase students’ mathematical sophistication and their ability to handle abstract problems.
3
SWEN-250
Personal Software Engineering
This is a project-based course to enhance individual, technical engineering knowledge and skills as preparation for upper-division team-based coursework. Topics include adapting to new languages, tools and technologies; developing and analyzing models as a prelude to implementation; software construction concepts (proper documentation, implementing to standards etc.); unit and integration testing; component-level estimation; and software engineering professionalism.
3
ACSC-010
Year One
The Year One class serves as an interdisciplinary catalyst for first-year students to access campus resources, services and opportunities that promote self-knowledge, personal success, leadership development, social responsibility and life academic skills awareness and application. Year One is also designed to challenge and encourage first-year students to get to know one another, build relationships and help them become an integral part of the campus community.
0
 
LAS Perspective 1 (ethical)
3
 
LAS Perspective 2 (artistic)
3
 
First Year Writing
3
 
Wellness Education*
0
Second Year
PHYS-211
LAS Perspective 5 (natural science inquiry): University Physics I
This is a course in calculus-based physics for science and engineering majors. Topics include kinematics, planar motion, Newton's Laws, gravitation, work and energy, momentum and impulse, conservation laws, systems of particles, rotational motion, static equilibrium, mechanical oscillations and waves, and data presentation/analysis. The course is taught in a workshop format that integrates the material traditionally found in separate lecture and laboratory courses.
4
PHYS-212
LAS Perspective 6 (scientific principles): University Physics II
This course is a continuation of PHYS-211, University Physics I. Topics include electrostatics, Gauss' law, electric field and potential, capacitance, resistance, DC circuits, magnetic field, Ampere's law, inductance, and geometrical and physical optics. The course is taught in a lecture/workshop format that integrates the material traditionally found in separate lecture and laboratory courses.
4
SWEN-220
Mathematical Models of Software
An introduction to the use of mathematics to model software as part of the software process. Included will be models of software structure and functionality, concurrent and distributed computation, and structured data.
3
COMM-253
Communication (WI)
An introduction to communication contexts and processes emphasizing both conceptual and practical dimensions. Participants engage in public speaking, small group problem solving and leadership, and writing exercises while acquiring theoretical background appropriate to understanding these skills.
3
SWEN-261
Introduction to Software Engineering
An introductory course in software engineering, emphasizing the organizational aspects of software development and software design and implementation by individuals and small teams within a process/product framework. Topics include the software lifecycle, software design, user interface issues, specification and implementation of components, assessing design quality, design reviews and code inspections, software testing, basic support tools, technical communications and system documentation, team-based development. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class.
3
STAT-205
Applied Statistics
This course covers basic statistical concepts and techniques including descriptive statistics, probability, inference, and quality control. The statistical package Minitab will be used to reinforce these techniques. The focus of this course is on statistical applications and quality improvement in engineering. This course is intended for engineering programs and has a calculus prerequisite. Note: This course may not be taken for credit if credit is to be earned in STAT-145 or STAT-155 or MATH 252..
3
SWEN-256
Software Process and Project Management
An introductory course to software process and related software project management issues. Emphasis is on the study, use, evaluation, and improvement of the software development process and related project management. Topics include software development methodologies, software project planning and tracking, change control, software quality assurance, risk management, and software process assessment and improvement.
3
SWEN-262
Engineering of Software Subsystems
An introduction to the principles of the foundations of contemporary software design. Topics include software subsystem modeling, design patterns, design tradeoffs, and component-based software development, with a focus on application of these concepts to concrete design problems. The relationship between design and related process issues such as testing, estimation, and maintenance are also discussed.
3
 
LAS Perspective 3 (global)
3
 
LAS Perspective 4 (social)
3
 
Cooperative Education (summer)
Co-op
Third Year
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.
3
SWEN-444
Human-Centered Requirements and Design
This course introduces quantitative models and techniques of human-computer interface analysis, design and evaluation, which are relevant to the software engineering approach of software development. User-focused requirements engineering topics are also covered. Contemporary human computer interaction (HCI) techniques are surveyed, with a focus on when and where they are applicable in the software development process. Students will deliver usable software systems derived from an engineering approach to the application of scientific theory and modeling. Other topics may include usability evaluation design, methods of evaluation, data analysis, social and ethical impacts of usability, prototyping and tools.
3
 
SWEN Process Elective
3
 
Math/Science Elective
3
 
LAS Immersion 1
3
 
Cooperative Education (spring)
Co-op
Fourth Year
SWEN-440
Software Engineering System Requirements and Architecture (WI)
Principles and practices related to identifying software system stakeholders, eliciting functional and quality requirements, translating requirements into architectural structures, and analyzing candidate architectures with respect to the requirements.
3
SWEN-331
Engineering Secure Software
Principles and practices forming the foundation for developing secure software systems. Coverage ranges across the entire development lifecycle: requirements, design, implementation and testing. Emphasis is on practices and patterns that reduce or eliminate security breaches in software intensive systems, and on testing systems to expose security weaknesses.
3
CMPE-240
Engineering Fundamentals of Computer Systems
This course introduces the computer engineering fundamentals upon which current computer systems are based. Discussion of the machine-level representation of data, Boolean algebra and simple logic circuits describes the hardware foundations for modern computer systems. An introduction to instruction set design and assembly language provides the student with an understanding of the interface between hardware and software. The course concludes by discussing high-level architectural design and networking emphasizing its effect on program performance.
4
 
Math/Science Elective
3
 
LAS Immersion 2
3
 
Cooperative Education (spring)
Co-op
Fifth Year
SWEN-561
Software Engineering Project I
The first course in a two-course, senior-level, capstone project experience. Students work as part of a team to develop solutions to problems posed by either internal or external customers. Problems may require considerable software development or evolution and maintenance of existing software products. Culminates with the completion and presentation of the first major increment of the project solution. Students must have co-op completed to enroll.
3
SWEN-562
Software Engineering Project II
This is the second course in a two-course, senior-level capstone project experience. Students submit one or more additional increments that build upon the solution submitted at the end of the first course. Students make major presentations for both customers as well as technical-oriented audiences, turn over a complete portfolio of project-related artifacts and offer an evaluation of the project and team experience.
3
 
Engineering Electives
6
 
Professional Elective
3
 
SWEN Design Elective
3
 
LAS Immersion 3
3
 
Free Electives
9
Total Semester Credit Hours
125

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

Accelerated dual degree options

Accelerated dual degree options are for undergraduate students with outstanding academic records. Upon acceptance, well-qualified students can begin graduate study before completing their BS degree, shortening the time it takes to earn both degrees. Students should consult an academic adviser for more information.

Software engineering, BS/MS degree, typical course sequence

Course Sem. Cr. Hrs.
First Year
CSCI-141
Computer Science I
This course serves as an introduction to computational thinking using a problem-centered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments (both in class and for homework) requiring a pseudo code solution and an implementation are an integral part of the course. An end-of-term project is also required.
4
CSCI-142
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of object-oriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary object-oriented design patterns. Input and output streams, graphical user interfaces, and exception handling are covered. Students will also be introduced to a modern integrated software development environment (IDE). Programming projects will be required.
4
MATH-181
LAS Perspective 7A (mathematical)
This is the first in a two-course sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers functions, limits, continuity, the derivative, rules of differentiation, applications of the derivative, Riemann sums, definite integrals, and indefinite integrals.
4
MATH-182
LAS Perspective 7B (mathematical)
This is the second in a two-course sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers techniques of integration including integration by parts, partial fractions, improper integrals, applications of integration, representing functions by infinite series, convergence and divergence of series, parametric curves, and polar coordinates.
4
SWEN-101
Freshman Seminar
Provides first-year students with the skills necessary to succeed at RIT and in the software engineering program. Small group sessions are used to help new students make friends, create a stronger bond with RIT and their program and become acquainted with the campus and its facilities. In addition, students are introduced to the profession of software engineering and to ethical issues they will face at RIT and throughout their careers.
1
MATH-190
Discrete Mathematics for Computing
This course introduces students to ideas and techniques from discrete mathematics that are widely used in Computer Science. Students will learn about the fundamentals of propositional and predicate calculus, set theory, relations, recursive structures and counting. This course will help increase students’ mathematical sophistication and their ability to handle abstract problems.
3
SWEN-250
Personal Software Engineering
This is a project-based course to enhance individual, technical engineering knowledge and skills as preparation for upper-division team-based coursework. Topics include adapting to new languages, tools and technologies; developing and analyzing models as a prelude to implementation; software construction concepts (proper documentation, implementing to standards etc.); unit and integration testing; component-level estimation; and software engineering professionalism.
3
ACSC-010
Year One
The Year One class serves as an interdisciplinary catalyst for first-year students to access campus resources, services and opportunities that promote self-knowledge, personal success, leadership development, social responsibility and life academic skills awareness and application. Year One is also designed to challenge and encourage first-year students to get to know one another, build relationships and help them become an integral part of the campus community.
0
 
First Year Writing 
3
 
LAS Perspective 1 (ethical)
3
 
LAS Perspective 2 (artistic)
3
 
Wellness Education*
0
Second Year
PHYS-211
LAS Perspective 5 (natural science inquiry): University Physics I
This is a course in calculus-based physics for science and engineering majors. Topics include kinematics, planar motion, Newton's Laws, gravitation, work and energy, momentum and impulse, conservation laws, systems of particles, rotational motion, static equilibrium, mechanical oscillations and waves, and data presentation/analysis. The course is taught in a workshop format that integrates the material traditionally found in separate lecture and laboratory courses.
4
PHYS-212
LAS Perspective 6 (scientific principles): University Physics II
This course is a continuation of PHYS-211, University Physics I. Topics include electrostatics, Gauss' law, electric field and potential, capacitance, resistance, DC circuits, magnetic field, Ampere's law, inductance, and geometrical and physical optics. The course is taught in a lecture/workshop format that integrates the material traditionally found in separate lecture and laboratory courses.
4
COMM-253
Communication (WI)
An introduction to communication contexts and processes emphasizing both conceptual and practical dimensions. Participants engage in public speaking, small group problem solving and leadership, and writing exercises while acquiring theoretical background appropriate to understanding these skills.
3
SWEN-256
Software Process and Project Management
An introductory course to software process and related software project management issues. Emphasis is on the study, use, evaluation, and improvement of the software development process and related project management. Topics include software development methodologies, software project planning and tracking, change control, software quality assurance, risk management, and software process assessment and improvement.
3
SWEN-261
Introduction to Software Engineering
An introductory course in software engineering, emphasizing the organizational aspects of software development and software design and implementation by individuals and small teams within a process/product framework. Topics include the software lifecycle, software design, user interface issues, specification and implementation of components, assessing design quality, design reviews and code inspections, software testing, basic support tools, technical communications and system documentation, team-based development. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class.
3
STAT-205
Applied Statistics
This course covers basic statistical concepts and techniques including descriptive statistics, probability, inference, and quality control. The statistical package Minitab will be used to reinforce these techniques. The focus of this course is on statistical applications and quality improvement in engineering. This course is intended for engineering programs and has a calculus prerequisite. Note: This course may not be taken for credit if credit is to be earned in STAT-145 or STAT-155 or MATH 252..
3
SWEN-220
Mathematician Models of Software Engineering
An introduction to the use of mathematics to model software as part of the software process. Included will be models of software structure and functionality, concurrent and distributed computation, and structured data.
3
SWEN-262
Engineering of Software Subsystems
An introduction to the principles of the foundations of contemporary software design. Topics include software subsystem modeling, design patterns, design tradeoffs, and component-based software development, with a focus on application of these concepts to concrete design problems. The relationship between design and related process issues such as testing, estimation, and maintenance are also discussed.
3
SWEN-488
Software Engineering Cooperative Education (summer)
Co-op
 
LAS Perspective 3 (global)
3
 
LAS Perspective 4 (social)
3
Third Year
SWEN-444
Human-Centered Requirements and Design
This course introduces quantitative models and techniques of human-computer interface analysis, design and evaluation, which are relevant to the software engineering approach of software development. User-focused requirements engineering topics are also covered. Contemporary human computer interaction (HCI) techniques are surveyed, with a focus on when and where they are applicable in the software development process. Students will deliver usable software systems derived from an engineering approach to the application of scientific theory and modeling. Other topics may include usability evaluation design, methods of evaluation, data analysis, social and ethical impacts of usability, prototyping and tools.
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.
3
SWEN-722
Process Engineering
In this course, students will study various lifecycle models for developing software systems. They will study the Software Process Engineering Metamodel (SPEM) standard as a tool for modeling and analyzing engineering processes. Students will use SPEM to characterize various process and organization models and patterns, and they will align these process characteristics to categories of needs for various organizations and projects. The students will study process engineering frameworks and the configuration and assembly of reusable process components into processes. Students will also study how tools and methods support the process. Students will also study software process assessment models, including the Capability Maturity Models, and learn how to identify specific recommendations for an organization to improve their processes. Students will apply their learning to engineer software engineering processes, tools, and methods appropriate for their graduate projects, course projects, and projects for organizations they have worked for.
3
SWEN-488
Cooperative Education (spring)
Co-op
 
Math/Science Elective
3
 
LAS Immersion 1
3
Fourth Year
SWEN-440
Software System Requirements and Architecture (WI)
Principles and practices related to identifying software system stakeholders, eliciting functional and quality requirements, translating requirements into architectural structures, and analyzing candidate architectures with respect to the requirements.
3
CMPE-240
Engineering Fundamentals of Computer Systems
This course introduces the computer engineering fundamentals upon which current computer systems are based. Discussion of the machine-level representation of data, Boolean algebra and simple logic circuits describes the hardware foundations for modern computer systems. An introduction to instruction set design and assembly language provides the student with an understanding of the interface between hardware and software. The course concludes by discussing high-level architectural design and networking emphasizing its effect on program performance.
4
SWEN-331
Engineering Secure Software 
Principles and practices forming the foundation for developing secure software systems. Coverage ranges across the entire development lifecycle: requirements, design, implementation and testing. Emphasis is on practices and patterns that reduce or eliminate security breaches in software intensive systems, and on testing systems to expose security weaknesses.
3
 
Math/Science Elective
3
 
LAS Immersion 2
3
 
Cooperative Education (spring)
co-op
Fifth Year
SWEN-561
Senior Project I
The first course in a two-course, senior-level, capstone project experience. Students work as part of a team to develop solutions to problems posed by either internal or external customers. Problems may require considerable software development or evolution and maintenance of existing software products. Culminates with the completion and presentation of the first major increment of the project solution. Students must have co-op completed to enroll.
3
SWEN-562
Senior Project II
This is the second course in a two-course, senior-level capstone project experience. Students submit one or more additional increments that build upon the solution submitted at the end of the first course. Students make major presentations for both customers as well as technical-oriented audiences, turn over a complete portfolio of project-related artifacts and offer an evaluation of the project and team experience.
3
SWEN-749
Software Evolution and Reengineering
This course explores the concepts of software evolution and reengineering and introduces approaches and support tools used to extract the information needed to assess existing software systems. Major maintenance activities are presented including estimating maintenance costs, managing change and predicting maintainability with software quality metrics. Organizational issues relative to product maintenance are discussed. Principles of software reuse and reverse engineering techniques are demonstrated through the use of class activities, team projects and case studies.
3
SWEN-640
Research Methods
Overview of the academic research methodologies used in graduate level work. Topics include writing style, audience analysis, research planning, experimental design, document structure, research validation, and the process for submission and review to conferences and journals. This course provides the student with an opportunity to identify and develop a detailed thesis or capstone proposal that will be continued in a subsequent course. An 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 adviser and committee. The proposal is presented in a scholarly format for approval by the adviser and committee.
3
 
SWEN Design Elective
3
 
Professional Elective
3
 
LAS Immersion 3
3
 
Free Electives
9
Sixth Year
SWEN-790
Thesis
This course provides the student with an opportunity to execute a thesis project, analyze and document the project in thesis document form. An in-depth study of a software engineering topic will be research focused, having built upon the thesis proposal developed prior to this course. The student is advised by their primary faculty adviser and committee. The thesis and thesis defense is presented for approval by the thesis adviser and committee.
6
SWEN-799
Software Engineering Independent Study
This course provides the graduate student an opportunity to explore an aspect of software engineering in depth, under the direction of an adviser. The student selects a topic, conducts background research, develops the system, analyses results, and disseminates the project work. The report explains the topic/problem, the student's approach and the results. (Completion of 9 semester hours is needed for enrollment)
3
SWEN-755
Software Architectures and Product Lines
A system's software architecture is the first technical artifact that illustrates a proposed solution to a stated problem. For all but the simplest system, the achievement of qualities such as flexibility, modifiability, security, and reliability is critically dependent on the components and interactions defined by the architecture. The course focuses on the definition of architectural structures, the analysis of architectures in terms of tradeoffs among conflicting constraints, the documentation of architecture for use over a product's life cycle, and the role of architecture in defining product lines based on reusable components.
3
 
Graduate Electives
9
Total Semester Credit Hours
155

Please see General Education Curriculum–Liberal Arts and Sciences (LAS) for more information.

(WI) Refers to a writing intensive course within the major.

* Please see Wellness Education Requirement for more information. Students completing bachelor's degrees are required to complete two different Wellness courses.

Software engineering, BS degree/Computing security, MS degree, typical course sequence

Course Sem. Cr. Hrs.
First Year
CSCI-141
Computer Science I
This course serves as an introduction to computational thinking using a problem-centered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments (both in class and for homework) requiring a pseudo code solution and an implementation are an integral part of the course. An end-of-term project is also required.
4
CSCI-142
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of object-oriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary object-oriented design patterns. Input and output streams, graphical user interfaces, and exception handling are covered. Students will also be introduced to a modern integrated software development environment (IDE). Programming projects will be required.
4
MATH-181
LAS Perspective 7A (mathematical): Calculus I
This is the first in a two-course sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers functions, limits, continuity, the derivative, rules of differentiation, applications of the derivative, Riemann sums, definite integrals, and indefinite integrals.
4
MATH-182
LAS Perspective 7B (mathematical): Calculus II
This is the second in a two-course sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers techniques of integration including integration by parts, partial fractions, improper integrals, applications of integration, representing functions by infinite series, convergence and divergence of series, parametric curves, and polar coordinates.
4
SWEN-101
Freshman Seminar
Provides first-year students with the skills necessary to succeed at RIT and in the software engineering program. Small group sessions are used to help new students make friends, create a stronger bond with RIT and their program and become acquainted with the campus and its facilities. In addition, students are introduced to the profession of software engineering and to ethical issues they will face at RIT and throughout their careers.
1
MATH-190
Discrete Mathematics for Computing
This course introduces students to ideas and techniques from discrete mathematics that are widely used in Computer Science. Students will learn about the fundamentals of propositional and predicate calculus, set theory, relations, recursive structures and counting. This course will help increase students’ mathematical sophistication and their ability to handle abstract problems.
3
SWEN-250
Personal Software Engineering
This is a project-based course to enhance individual, technical engineering knowledge and skills as preparation for upper-division team-based coursework. Topics include adapting to new languages, tools and technologies; developing and analyzing models as a prelude to implementation; software construction concepts (proper documentation, implementing to standards etc.); unit and integration testing; component-level estimation; and software engineering professionalism.
3
ACSC-010
Year One
The Year One class serves as an interdisciplinary catalyst for first-year students to access campus resources, services and opportunities that promote self-knowledge, personal success, leadership development, social responsibility and life academic skills awareness and application. Year One is also designed to challenge and encourage first-year students to get to know one another, build relationships and help them become an integral part of the campus community.
0
 
LAS Perspective 1 (ethical)
3
 
LAS Perspective 2 (artistic)
3
 
First Year Writing 
3
 
Wellness Education*
0
Second Year
PHYS-211
LAS Perspective 5 (natural science inquiry): University Physics I
This is a course in calculus-based physics for science and engineering majors. Topics include kinematics, planar motion, Newton's Laws, gravitation, work and energy, momentum and impulse, conservation laws, systems of particles, rotational motion, static equilibrium, mechanical oscillations and waves, and data presentation/analysis. The course is taught in a workshop format that integrates the material traditionally found in separate lecture and laboratory courses.
4
PHYS-212
LAS Perspective 6 (scientific principles): University Physics II
This course is a continuation of PHYS-211, University Physics I. Topics include electrostatics, Gauss' law, electric field and potential, capacitance, resistance, DC circuits, magnetic field, Ampere's law, inductance, and geometrical and physical optics. The course is taught in a lecture/workshop format that integrates the material traditionally found in separate lecture and laboratory courses.
4
COMM-253
Communication (WI)
An introduction to communication contexts and processes emphasizing both conceptual and practical dimensions. Participants engage in public speaking, small group problem solving and leadership, and writing exercises while acquiring theoretical background appropriate to understanding these skills.
3
SWEN-261
Introduction to Software Engineering
An introductory course in software engineering, emphasizing the organizational aspects of software development and software design and implementation by individuals and small teams within a process/product framework. Topics include the software lifecycle, software design, user interface issues, specification and implementation of components, assessing design quality, design reviews and code inspections, software testing, basic support tools, technical communications and system documentation, team-based development. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class.
3
STAT-205
Applied Statistics
This course covers basic statistical concepts and techniques including descriptive statistics, probability, inference, and quality control. The statistical package Minitab will be used to reinforce these techniques. The focus of this course is on statistical applications and quality improvement in engineering. This course is intended for engineering programs and has a calculus prerequisite. Note: This course may not be taken for credit if credit is to be earned in STAT-145 or STAT-155 or MATH 252..
3
SWEN-256
Software Process and Project Management
An introductory course to software process and related software project management issues. Emphasis is on the study, use, evaluation, and improvement of the software development process and related project management. Topics include software development methodologies, software project planning and tracking, change control, software quality assurance, risk management, and software process assessment and improvement.
3
SWEN-220
Mathematical Models of Software Engineering
An introduction to the use of mathematics to model software as part of the software process. Included will be models of software structure and functionality, concurrent and distributed computation, and structured data.
3
SWEN-262
Engineering of Software Subsystems
An introduction to the principles of the foundations of contemporary software design. Topics include software subsystem modeling, design patterns, design tradeoffs, and component-based software development, with a focus on application of these concepts to concrete design problems. The relationship between design and related process issues such as testing, estimation, and maintenance are also discussed.
3
 
LAS Perspective 3 (global)
3
 
LAS Perspective 4 (social)
3
Third Year
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.
3
SWEN-444
Human-Centered Requirements and Design
This course introduces quantitative models and techniques of human-computer interface analysis, design and evaluation, which are relevant to the software engineering approach of software development. User-focused requirements engineering topics are also covered. Contemporary human computer interaction (HCI) techniques are surveyed, with a focus on when and where they are applicable in the software development process. Students will deliver usable software systems derived from an engineering approach to the application of scientific theory and modeling. Other topics may include usability evaluation design, methods of evaluation, data analysis, social and ethical impacts of usability, prototyping and tools.
3
 
SWEN Process Elective
3
 
LAS Immersion 1
3
 
Math/Science Elective
3
 
Cooperative Education
Co-op
Fourth Year
CMPE-240
Engineering Fundamentals of Computer Systems
This course introduces the computer engineering fundamentals upon which current computer systems are based. Discussion of the machine-level representation of data, Boolean algebra and simple logic circuits describes the hardware foundations for modern computer systems. An introduction to instruction set design and assembly language provides the student with an understanding of the interface between hardware and software. The course concludes by discussing high-level architectural design and networking emphasizing its effect on program performance.
4
SWEN-331
Engineering Secure Software
Principles and practices forming the foundation for developing secure software systems. Coverage ranges across the entire development lifecycle: requirements, design, implementation and testing. Emphasis is on practices and patterns that reduce or eliminate security breaches in software intensive systems, and on testing systems to expose security weaknesses.
3
SWEN-440
Software System Requirements and Architecture (WI)
Principles and practices related to identifying software system stakeholders, eliciting functional and quality requirements, translating requirements into architectural structures, and analyzing candidate architectures with respect to the requirements.
3
 
Math/Science Elective
3
 
LAS Immersion 2
3
 
Cooperative Education 
Co-op
Fifth Year
SWEN-561
Senior Project I
The first course in a two-course, senior-level, capstone project experience. Students work as part of a team to develop solutions to problems posed by either internal or external customers. Problems may require considerable software development or evolution and maintenance of existing software products. Culminates with the completion and presentation of the first major increment of the project solution. Students must have co-op completed to enroll.
3
SWEN-562
Senior Engineering Project II
This is the second course in a two-course, senior-level capstone project experience. Students submit one or more additional increments that build upon the solution submitted at the end of the first course. Students make major presentations for both customers as well as technical-oriented audiences, turn over a complete portfolio of project-related artifacts and offer an evaluation of the project and team experience.
3
CSEC-731
Web Server and Application Security Audits
This course discusses the processes and procedures to perform a technical security audit of web servers and web based applications. Students will not only explore Web Servers and Applications/Services threats, but also apply the latest auditing techniques to identify vulnerabilities existing in or stemming from web servers and applications. Students will write and present their findings and recommendations in audit reports on web servers and application vulnerabilities. To be successful in this course students should be knowledgeable in a scripting language and comfortable with the administration of both Linux and Windows platforms.
3
CSEC-733
Information Security and Risk Management
This course will provide students with an introduction to the principle of risk management and its three key elements: risk analysis, risk assessment and vulnerability assessment. Students will also learn the differences between quantitative and qualitative risk assessment, and details of how security metrics can be modeled/monitored/controlled and how various types of qualitative risk assessment can be applied to the overall assessment process. Several industry case studies will be studied and discussed. Students will work together in teams to conduct risk assessments based on selected case studies or hypothetical scenarios. Finally, they will write and present their risk assessment reports and findings.
3
CSEC-742
Computer System Security
The importance of effective security policies and procedures coupled with experience and practice is emphasized and reinforced through research and practical assignments. Organization and management of security discipline and response to threats is studied. Case studies of effective and failed security planning and implementation will be examined and analyzed. The issues influencing proper and appropriate planning for security and response to attacks will be studied. To be successful in this course students should be knowledgeable in networking, systems, and security technologies.
3
 
LAS Immersion 3
3
 
SWEN Design Elective
3
 
Engineering Electives
6
 
Professional Elective
3
Sixth Year
CSEC-601
Research Methods and Proposal Development
The goal of this course is to introduce the students to a programming paradigm and an appropriate programming language chosen from those that are currently important or that show high promise of becoming important. A significant portion of the learning curve occurs through programming assignments with exemplary solutions discussed later in class. The instructor will post specifics prior to registration. With the approval of the program coordinator, the course can be taken for credit more than once, provided each instance deals with a different paradigm and language. A term project involving independent investigation is also required.
3
CSEC-603
Enterprise Security
This course is designed to provide students with the advanced concepts needed to establish network security strategies to ensure adequate protection for the corporate environment and yet provide accessibility for the corporate community.
3
CSEC-604
Cryptography and Authentication
In this course, students will learn in depth knowledge of cryptography and authentication. Students will explore various cryptography algorithms, authentication protocols, and their design and implementation. Students will work on a project to implement a cryptographic algorithm and/or an authentication protocol. The applications of cryptography and authentications in the areas of computer networks and systems and information assurance will also be investigated.
3
CSEC-790
Computing Security Thesis
This course is a capstone course 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. As part of their original work students will write and submit for publication an article to a peer reviewed journal or conference. 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.
6
 
Computing Security Graduate Electives
6
Total Semester Credit Hours
155

Please see General Education Curriculum–Liberal Arts and Sciences (LAS) for more information.

(WI) Refers to a writing intensive course within the major.

* Please see Wellness Education Requirement for more information. Students completing bachelor's degrees are required to complete two different Wellness courses.

Software engineering, BS degree/Computer science, MS degree, typical course sequence

Course Sem. Cr. Hrs.
First Year
CSCI-141
Computer Science I
This course serves as an introduction to computational thinking using a problem-centered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments (both in class and for homework) requiring a pseudo code solution and an implementation are an integral part of the course. An end-of-term project is also required.
4
CSCI-142
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of object-oriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary object-oriented design patterns. Input and output streams, graphical user interfaces, and exception handling are covered. Students will also be introduced to a modern integrated software development environment (IDE). Programming projects will be required.
4
MATH-181
LAS Perspective 7A (mathematical): Calculus I
This is the first in a two-course sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers functions, limits, continuity, the derivative, rules of differentiation, applications of the derivative, Riemann sums, definite integrals, and indefinite integrals.
4
MATH-182
LAS Perspective 7B (mathematical): Calculus II
This is the second in a two-course sequence intended for students majoring in mathematics, science, or engineering. It emphasizes the understanding of concepts, and using them to solve physical problems. The course covers techniques of integration including integration by parts, partial fractions, improper integrals, applications of integration, representing functions by infinite series, convergence and divergence of series, parametric curves, and polar coordinates.
4
SWEN-101
Freshman Seminar
Provides first-year students with the skills necessary to succeed at RIT and in the software engineering program. Small group sessions are used to help new students make friends, create a stronger bond with RIT and their program and become acquainted with the campus and its facilities. In addition, students are introduced to the profession of software engineering and to ethical issues they will face at RIT and throughout their careers.
1
MATH-190
Discrete Mathematics for Computing
This course introduces students to ideas and techniques from discrete mathematics that are widely used in Computer Science. Students will learn about the fundamentals of propositional and predicate calculus, set theory, relations, recursive structures and counting. This course will help increase students’ mathematical sophistication and their ability to handle abstract problems.
3
SWEN-250
Personal Software Engineering
This is a project-based course to enhance individual, technical engineering knowledge and skills as preparation for upper-division team-based coursework. Topics include adapting to new languages, tools and technologies; developing and analyzing models as a prelude to implementation; software construction concepts (proper documentation, implementing to standards etc.); unit and integration testing; component-level estimation; and software engineering professionalism.
3
ACSC-010
Year One
The Year One class serves as an interdisciplinary catalyst for first-year students to access campus resources, services and opportunities that promote self-knowledge, personal success, leadership development, social responsibility and life academic skills awareness and application. Year One is also designed to challenge and encourage first-year students to get to know one another, build relationships and help them become an integral part of the campus community.
0
 
LAS Perspective 1 (ethical)
3
 
LAS Perspective 2 (artistic)
3
 
First Year Writing
3
 
Wellness Education*
0
Second Year
PHYS-211
LAS Perspective 5 (natural science inquiry): University Physics I
This is a course in calculus-based physics for science and engineering majors. Topics include kinematics, planar motion, Newton's Laws, gravitation, work and energy, momentum and impulse, conservation laws, systems of particles, rotational motion, static equilibrium, mechanical oscillations and waves, and data presentation/analysis. The course is taught in a workshop format that integrates the material traditionally found in separate lecture and laboratory courses.
4
PHYS-212
LAS Perspective 6 (scientific principles): University Physics II
This course is a continuation of PHYS-211, University Physics I. Topics include electrostatics, Gauss' law, electric field and potential, capacitance, resistance, DC circuits, magnetic field, Ampere's law, inductance, and geometrical and physical optics. The course is taught in a lecture/workshop format that integrates the material traditionally found in separate lecture and laboratory courses.
4
COMM-253
Communication (WI)
An introduction to communication contexts and processes emphasizing both conceptual and practical dimensions. Participants engage in public speaking, small group problem solving and leadership, and writing exercises while acquiring theoretical background appropriate to understanding these skills.
3
SWEN-261
Introduction to Software Engineering
An introductory course in software engineering, emphasizing the organizational aspects of software development and software design and implementation by individuals and small teams within a process/product framework. Topics include the software lifecycle, software design, user interface issues, specification and implementation of components, assessing design quality, design reviews and code inspections, software testing, basic support tools, technical communications and system documentation, team-based development. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class.
3
SWEN-220
Mathematical Models of Software Engineering
An introduction to the use of mathematics to model software as part of the software process. Included will be models of software structure and functionality, concurrent and distributed computation, and structured data.
3
STAT-205
Applied Statistics
This course covers basic statistical concepts and techniques including descriptive statistics, probability, inference, and quality control. The statistical package Minitab will be used to reinforce these techniques. The focus of this course is on statistical applications and quality improvement in engineering. This course is intended for engineering programs and has a calculus prerequisite. Note: This course may not be taken for credit if credit is to be earned in STAT-145 or STAT-155 or MATH 252..
3
SWEN-256
Software Process and Project Management
An introductory course to software process and related software project management issues. Emphasis is on the study, use, evaluation, and improvement of the software development process and related project management. Topics include software development methodologies, software project planning and tracking, change control, software quality assurance, risk management, and software process assessment and improvement.
3
SWEN-262
Engineering of Software Subsystems
An introduction to the principles of the foundations of contemporary software design. Topics include software subsystem modeling, design patterns, design tradeoffs, and component-based software development, with a focus on application of these concepts to concrete design problems. The relationship between design and related process issues such as testing, estimation, and maintenance are also discussed.
3
 
LAS Perspective 3 (global)
3
 
LAS Perspective 4 (social)
3
Third Year
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.
3
SWEN-444
Human-Centered Requirements and Design
This course introduces quantitative models and techniques of human-computer interface analysis, design and evaluation, which are relevant to the software engineering approach of software development. User-focused requirements engineering topics are also covered. Contemporary human computer interaction (HCI) techniques are surveyed, with a focus on when and where they are applicable in the software development process. Students will deliver usable software systems derived from an engineering approach to the application of scientific theory and modeling. Other topics may include usability evaluation design, methods of evaluation, data analysis, social and ethical impacts of usability, prototyping and tools.
3
 
SWEN Process Elective
3
 
LAS Immersion 1
3
 
Math/Science Elective
3
 
Cooperative Education (fall)
Co-op
Fourth Year
CMPE-240
Engineering Fundamentals of Computer Systems
This course introduces the computer engineering fundamentals upon which current computer systems are based. Discussion of the machine-level representation of data, Boolean algebra and simple logic circuits describes the hardware foundations for modern computer systems. An introduction to instruction set design and assembly language provides the student with an understanding of the interface between hardware and software. The course concludes by discussing high-level architectural design and networking emphasizing its effect on program performance.
4
SWEN-331
Engineering Secure Software
Principles and practices forming the foundation for developing secure software systems. Coverage ranges across the entire development lifecycle: requirements, design, implementation and testing. Emphasis is on practices and patterns that reduce or eliminate security breaches in software intensive systems, and on testing systems to expose security weaknesses.
3
SWEN-440
Software System Requirements and Architecture (WI)
Principles and practices related to identifying software system stakeholders, eliciting functional and quality requirements, translating requirements into architectural structures, and analyzing candidate architectures with respect to the requirements.
3
 
Math/Science Elective
3
 
LAS Immersion 2
3
 
Cooperative Education (spring, summer)
Co-op
Fifth Year
SWEN-561
Software Engineering Project I
The first course in a two-course, senior-level, capstone project experience. Students work as part of a team to develop solutions to problems posed by either internal or external customers. Problems may require considerable software development or evolution and maintenance of existing software products. Culminates with the completion and presentation of the first major increment of the project solution. Students must have co-op completed to enroll.
3
SWEN-562
Software Engineering Project II
This is the second course in a two-course, senior-level capstone project experience. Students submit one or more additional increments that build upon the solution submitted at the end of the first course. Students make major presentations for both customers as well as technical-oriented audiences, turn over a complete portfolio of project-related artifacts and offer an evaluation of the project and team experience.
3
CSCI-664
Computational Complexity
This course provides an introduction to computational complexity theory. It covers the P=NP problem, time and space complexity, randomization, approximability, and relativization. Course offered every other year.
3
 
Graduate Computer Science Foundation Course
3
 
Engineering Electives
6
 
LAS Immersion 3
3
 
SWEN Design Elective
3
 
Free Elective
3
 
Professional Elective
3
Sixth Year
CSCI-712
Computer Animation: Algorithms and Techniques
This course takes a look at computer animation from a programmer's perspective. It will investigate the theory, algorithms and techniques for describing and programming motion for virtual 3D worlds. Approaches that will be explored include keyframing systems; kinematics, motion of articulated figures, procedural and behavioral systems, and the use of motion capture data. This course is a programming-oriented course with major deliverables including the implementation of techniques presented in lecture as well as a final project concentrating on an area of a student's choice. Students enrolling in this course are expected to have proficiency in the use of at least one 3D API (e.g. OpenGL, DirectX, Java3D). Readings and summaries of Computer Graphics literature will be required. Offered every other year.
3
CSCI-631
Foundations of Computer Vision
An introduction to the underlying concepts of computer vision and image understanding. The course will consider fundamental topics, including image formation, edge detection, texture analysis, color, segmentation, shape analysis, detection of objects in images and high level image representation. Depending on the interest of the class, more advanced topics will be covered, such as image database retrieval or robotic vision. Programming assignments are an integral part of the course. Note: students who complete CSCI-431 may not take CSCI-631 for credit.
3
CSCI-711
Global Illumination
This course will investigate the theory of global illumination (GI) in computer image synthesis. Seminal computer graphics papers will be used to explore the various components of the GI pipeline and explain how the path of light in a virtual scene can be simulated and used to create photorealistic imagery. The course will emphasize the theory behind various GI rendering tools and libraries available for image synthesis. The student will put theory into practice via a set of programming assignments and a capstone project. Topics will include light and color, three-dimensional scene specification, camera models, surface materials and textures, GI rendering methods, procedural shading, tone reproduction, and advanced rendering techniques. Readings and summaries of Computer Graphics literature will be required.
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.
3
CSCI-641
Advanced Programming Skills
The goal of this course is to introduce the students to a programming paradigm and an appropriate programming language chosen from those that are currently important or that show high promise of becoming important. A significant portion of the learning curve occurs through programming assignments with exemplary solutions discussed later in class. The instructor will post specifics prior to registration. With the approval of the program coordinator, the course can be taken for credit more than once, provided each instance deals with a different paradigm and language. A term project involving independent investigation is also required. Note: students who complete CSCI-541 may not take CSCI-641 for credit.
3
CSCI-788
Computer Science MS Project
Project capstone of the master's degree program. Students select from a set of possible projects and confirm that they have a project adviser. Students enroll in a required colloquium component that meets weekly, during which they present information, related to their projects. Projects culminate with delivery of a final report and participation in a poster session open to the public.
3
 
Computer Science Graduate Courses
6
Total Semester Credit Hours
155

Please see General Education Curriculum–Liberal Arts and Sciences (LAS) for more information.

(WI) Refers to a writing intensive course within the major.

* Please see Wellness Education Requirement for more information. Students completing bachelor's degrees are required to complete two different Wellness courses.

Engineering electives

 
Any software engineering (SWEN) elective course
 
Any course offered through the College of Engineering (exceptions apply)
CSCI-331
Introduction to Intelligent Systems
An introduction to the theories and algorithms used to create intelligent systems. Topics include search algorithms (e.g. A*, iterative deepening), logic, planning, knowledge representation, machine learning, and applications from areas such as computer vision, robotics, natural language processing, and expert systems. Programming assignments are an integral part of the course.
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.
CSCI-351
Data Communications and Networks I
This course is an in-depth study of data communications and networks. The course covers design of, and algorithms and protocols used in, the physical, data link, network, transport, and application layers in the Internet; methods for modeling and analyzing networks, including graphs, graph algorithms, and discrete event simulation; and an introduction to network science. Programming projects will be required.
CSCI-352
Operating Systems
An in-depth study of operating system concepts. Topics include process synchronization, interprocess communication, deadlock, multiprogramming and multiprocessing, processor scheduling and resource management, memory management, static and dynamic relocation, virtual memory, file systems, logical and physical I/O, device allocation, I/O processor scheduling, process and resource protection. Programming projects involving the development of or modification to operating system kernel features will be required.
CSCI-420
Principles of Data Mining
This course provides an introduction to the major concepts and techniques used in data mining of large databases. Topics include the knowledge discovery process; data exploration and cleaning; data mining algorithms; and ethical issues underlying data preparation and mining. Data mining projects, presentations, and a term paper are required.
CSCI-431
Introduction to Computer Vision
An introduction to the underlying concepts of computer vision. 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 homework assignments that implement the concepts discussed in class are an integral part of the course.
CSCI-442
Language Processors
CSCI-462
Introduction to Cryptography
This course provides an introduction to cryptography, its mathematical foundations, and its relation to security. It covers classical cryptosystems, private-key cryptosystems (including DES and AES), hashing and public-key cryptosystems (including RSA). The course also provides an introduction to data integrity and authentication.
CSCI-510
Introduction to Computer Graphics
Introduction to 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 will be required.

Software engineering design electives

SWEN-342
Engineering of Concurrent and Distributed Software Systems
The principles, practices and patterns applicable to the design and construction of concurrent and distributed software systems. Topics include synchronization, coordination and communication; deadlock, safety and liveness; concurrent and distributed design patterns; analysis of performance; distributed state management.
SWEN-343
Engineering of Enterprise Software Systems
This course addresses architecture-level design of large, enterprise-critical software systems. The course focuses on enterprise-level design patterns and on design approaches for object-oriented and aspect-oriented application containers: encapsulating database access, application distribution, concurrent session management, security, scalability, reliability, web-based user interaction, and the programming models and tools to support system development, integration, testing, and deployment. Hands-on exercises and a team project will reinforce the course concepts and expose students to the complexity of these systems.
SWEN-344
Engineering of Web-based Software Systems
A course in web engineering, emphasizing organizational aspects of web development, design and implementation by individuals and small teams. Students will be instructed in the proper application of software engineering principles to the creation of web applications. Course topics will include, but not be limited to web usability, accessibility, testing, web services, databases, requirements elicitation and negotiation. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class.
SWEN-563
Real Time and Embedded Systems
This course provides a general introduction to real-time and embedded systems. It will introduce a representative family of microcontrollers and require students to program on these devices. Fundamental material on real-time operating systems, such as requirements specification, scheduling algorithms and priority inversion avoidance will be presented. The features of a commercial real-time operating system will be discussed and used for course projects.
SWEN-564
Modeling of Real Time Systems
This course introduces the modeling of real-time software systems.? It takes an engineering approach to the design of these systems by analyzing system models before beginning implementation.? UML will be the primary modeling methodology. Non-UML methodologies will also be discussed.? Implementations of real-time systems will be developed manually from the models and using automated tools to generate the code.
SWEN-565
Performance Engineering of Real Time and Embedded Systems
This course discusses issues of performance in real-time and embedded systems. Techniques for profiling the resource usage of a system and for measuring the effect of increasing system requirements will be covered. The control of physical systems will motivate the need for performance tuning of a real-time system. Students will write programs running under a real-time operating system that can maintain control of a physical system. The course will discuss and experiment with performance trade-offs that can be made using hardware-software co-design.
SWEN-567
Hardware Software Co-design for Cryptographic Applications
The objective of this course is to establish knowledge and skills necessary for efficient implementations of cryptographic primitives on reconfigurable hardware. Implementation platform will be a field programmable gate array (FPGAs) containing general purpose processor and additional reconfigurable fabric for implementations of custom hardware accelerators. In the studio format students work on team projects that require them to design, and then compare and contrast software, custom FPGA hardware, and hybrid hardware-software co-design implementations of selected cryptographic primitives.
SWEN-549
Software Engineering Design Seminar
Emerging topics of relevance in software engineering design.

Software engineering process electives

SWEN-350
Software Process and Product Quality
This course covers advanced topics in software engineering relating to software quality, with processes and metrics being viewed as a means to achieving quality. Quality is interpreted broadly to include product functionality and performance, project schedule and budget, and business objectives. Software metrics help a software organization on two main fronts: quality assessment of its products and processes, and process improvement towards its main goal: the production of successful software artifacts within schedule and budget constraints.
SWEN-352
Software Testing
Concepts and techniques for testing soft ware and assuring its quality. Topics cover software testing at the unit and system levels; static vs. dynamic analysis; functional testing; inspections; and reliability assessment.
SWEN-356
Trends in Software Development Processes
A course in the exploration of current approaches in planning, executing and managing the project activities performed during the development of a professional software product. Topics include the characteristics of state of the practice development methods, selecting practices best suited based on project context and techniques for refining practices to achieve process improvement. Students work on team projects inclusive of all development life cycle activities to reinforce concepts presented in class.
SWEN-559
Software Engineering Process Seminar
Emerging topics of relevance in software engineering process.

Professional electives

BLEG-200
Business Law I
An introduction to legal principles and their relationship to business organizations. Explores the U.S. legal system, the U.S. court system, civil and criminal procedure, the role of government agencies, legal research, and the substantive areas of law most relevant to business, including constitutional law, tort law, criminal law, contract law, intellectual property, debtor-creditor relations, bankruptcy, business entities, securities regulation, and antitrust law.
DECS-310
Operations Management
A survey of operations and supply chain management that relates to both service- and goods- producing organizations. Topics include operations and supply chain strategies; ethical behavior; forecasting; product and service design, including innovation and sustainability; capacity and inventory management; lean operations; managing projects; quality assurance; global supply chains; and the impacts of technology.
INTB-225
Global Business Environment
Being an informed global citizen requires an understanding of the global business environment. Organizations critical to the development of the global business environment include for-profit businesses, non-profits, governmental, non-governmental, and supranational agencies. This course introduces students to the interdependent relationships between organizations and the global business environment. A holistic approach is used to examine the diverse economic, political, legal, cultural, and financial systems that influence both organizations and the global business environment.
MGMT-215
Organizational Behavior
As an introductory course in managing and leading organizations, this course provides an overview of human behavior in organizations at the individual, group, and organizational level with an emphasis on enhancing organizational effectiveness. Topics include: individual differences, work teams, motivation, communication, leadership, conflict resolution, organizational culture, and organizational change.
MGMT-350
Entrepreneurship
This course studies the process of creating new ventures with an emphasis on understanding the role of the entrepreneur in identifying opportunities, seeking capital and other resources, and managing the formation and growth of a new venture. It addresses the role of entrepreneurship in the economy and how entrepreneurial ventures are managed for growth.
MGMT-420
Managing Innovation and Technology
This course focuses on commercializing technology, and gives students the chance to work on real business projects involving new technology. Topics covered include assessing inventions for market readiness, drivers of innovation, technology-driven entrepreneurship and intrapreneurship, managing different types of innovation, and the construction of a technology strategy for a firm or business unit. Students learn how to understand both technology and business perspectives as well as how to formulate a profitable technology strategy. Projects focus on current situations in real companies, including, on occasion, student-owned startup companies.
MKTG-230
Principles of Marketing
An introduction to the field of marketing, stressing its role in the organization and society. Emphasis is on determining customer needs and wants and how the marketer can satisfy those needs through the controllable marketing variables of product, price, promotion and distribution.

Math/Science electives*

BIOL-101
General Biology I
This course serves as an introduction to cellular, molecular, and evolutionary biology. Topics will include: a study of the basic principles of modern cellular biology, including cell structure and function; the chemical basis and functions of life, including enzyme systems and gene expression; and the origin of life and evolutionary patterns of organism development on Earth.
BIOL-102
General Biology II
This course serves as an introduction to animal and plant anatomy and physiology, in addition to the fundamentals of ecology. Topics will include: animal development; animal body systems; plant development; unique plant systems; Earth's terrestrial and aquatic environments; population and community ecology; animal behavior; and conservation biology.
CHMG-141,145
General and Analytical Chemistry I with Lab
CHMG-142,146
General and Analytical Chemistry II with Lab
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.
ENVS-101
Concepts of Environmental Science
This course is the foundation course for the Environmental Science major and presents an integrated approach to the interrelated, interdisciplinary principles of environmental science through lecture, case studies and active participation. In this course, the focus will be on sustainability as the foundation for problem solving while investigating a number of environmental issues and establishing environmental literacy. Topics may include biodiversity, ecosystems, pollution, energy, and global climate change. To demonstrate the interdisciplinary methodology of environmental science, elements of government/political science/policy, ethics, economics, sociology, history and engineering are embedded in the scientific matrix used to present this course.
IMGS-111
Imaging Science Fundamentals
This course is an exploration of the fundamentals of imaging science and the imaging systems of the past, present, and future. Imaging systems studied include the human visual system, consumer and entertainment applications (e.g., traditional and digital photography, television, digital television, HDTV, and virtual reality); medical applications (e.g., X-ray, ultrasound, and MRI); business/document applications (e.g., impact and non-impact printing, scanners, printers, fax machines, and copiers) and systems used in remote sensing and astronomy (e.g., night-vision systems, ground- and satellite-based observatories). The laboratory component reinforces the principles and theories discussed in the lecture, while giving students experience with many imaging systems and exposure to the underlying scientific principles.
IMGS-112
Astronomical Imaging Fundamentals
This course familiarizes students with the goals and techniques of astronomical imaging. The broad nature of astronomical sources will be outlined, in terms of requirements on astronomical imaging systems. These requirements are then investigated in the context of the astronomical imaging chain. Imaging chains in the optical, X-ray, radio, and/ or other wavelengths will be studied in detail. Laboratory assignments will range from construction and characterization of a hand-held telescope to analysis of astronomical images.
ITDS-280
Designing of Scientific Experiments
This course is an introduction to design and analysis of scientific research experiments. The course will present various types of experimental designs and include discussions of situations in which each is appropriate. In-class sessions will generally follow a group discussion format. This course is centered on a research experimental design experience. The student will bring or develop a research question, design an appropriate experiment, gather and analyze data, and prepare the results. The culminating event is a research ‘conference’ at which the students will present their findings.
MATH-219
Multivariable Calculus
This course is principally a study of the calculus of functions of two or more variables, but also includes the study of vectors, vector-valued functions and their derivatives. The course covers limits, partial derivatives, multiple integrals, and includes applications in physics. Credit cannot be granted for both this course and MATH-221.
MATH-231
Differential Equations
This course is an introduction to the study of ordinary differential equations and their applications. Topics include solutions to first order equations and linear second order equations, method of undetermined coefficients, variation of parameters, linear independence and the Wronskian, vibrating systems, and Laplace transforms.
MATH-241
Linear Algebra
This course is an introduction to the basic concepts of linear algebra, and techniques of matrix manipulation. Topics include linear transformations, Gaussian elimination, matrix arithmetic, determinants, vector spaces, linear independence, basis, null space, row space, and column space of a matrix, eigenvalues, eigenvectors, change of basis, similarity and diagonalization. Various applications are studied throughout the course.
MATH-251
Probability and Statistics I
This course introduces sample spaces and events, axioms of probability, counting techniques, conditional probability and independence, distributions of discrete and continuous random variables, joint distributions (discrete and continuous), the central limit theorem, descriptive statistics, interval estimation, and applications of probability and statistics to real-world problems. A statistical package such as Minitab or R is used for data analysis and statistical applications.
MATH-351
Graph Theory
This course covers the theory of graphs and networks for both directed and undirected graphs. Topics include graph isomorphism, Eulerian and Hamiltonian graphs, matching, covers, connectivity, coloring, and planarity. There is an emphasis on applications to real world problems and on graph algorithms such as those for spanning trees, shortest paths, and network flows.
MATH-367
Codes and Ciphers
This course will introduce, explain and employ the basic techniques of cryptography, both classical and modern. Topics will include the Vignere cipher, affine ciphers, Hill ciphers, one-time pad encryption, Enigma, cryptosystems such as DES (Data Encryption Standard) and AES (Advanced Encryption Standard), public key encryption scheme (RSA), and hash functions. The course will include an introduction to number theoretic tools used in cryptography.
PHYS-220
University Astronomy
This course is an introduction to the basic concepts of astronomy and astrophysics for scientists and engineers. Topics include the celestial sphere, celestial mechanics, methods of data acquisition, planetary systems, stars and stellar systems, cosmology, and life in the universe.

Admission Requirements

Freshman Admission

For all bachelor’s degree programs, a strong performance in a college preparatory program is expected. Generally, this includes 4 years of English, 3-4 years of mathematics, 2-3 years of science, and 3 years of social studies and/or history.

Specific math and science requirements and other recommendations

  • 4 years of math including pre-calculus required
  • Requires chemistry or physics and strongly recommends both.
  • Computing electives are recommended

Transfer Admission

Transfer course recommendations without associate degree

Courses in computer science, calculus, liberal arts; calculus-based physics, chemistry, or biology

Appropriate associate degree programs for transfer

AS degree in computer science, engineering science, or liberal arts

Learn about admissions and financial aid 

Additional Info

Laboratories

Equipped with the latest technology, the software engineering department’s facilities include three student instructional studio labs, a specialized embedded systems lab, and a collaboration lab. In addition, freshmen are encouraged to take advantage of the department’s mentoring lab. Staffed by advanced software engineering students, this lab offers new students an environment where they can learn from those who have successfully fulfilled most of the major's academic requirements.

Students enrolled in software engineering courses also can use any of the department’s eleven team rooms. Equipped with a computer and projector, network connections, a meeting table, seating for six, and generous whiteboard space, these rooms support the department’s commitment to teamwork, both inside and outside the classroom.