Software Engineering Bachelor of science degree

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

Overview

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


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.

We offer a challenging undergraduate program that prepares students for the demands and challenges of the software industry. The undergraduate degree consists of both core and elective courses that focus on the software engineering lifecycle. In addition, each student must complete a senior project on a team of four or five students.

Plan of study

The software engineering program has four key elements: engineering design, software product development, teamwork, and communication. The curriculum ensures that the student's coursework balances between software design principles and software process practices. In every course, teamwork is emphasized with a significant part of the final grade being based on team project activities. By the time our students start their senior project, they will have worked on 20 to 25 different student teams in their software engineering courses. Software engineering students also develop their communication skills. In every course, they will be preparing engineering documentation, such as requirements documents, design documents, project plans, burndown charts, and software test plans. Also, at the end of each project cycle, the students make oral presentations on their work and receive critique from the instructor and other students in the class.

The software engineering program focuses on developing skills to:

  1. Model and analyze proposed and existing software systems, especially through the use of discrete mathematics and statistics.
  2. Apply quality principles to the definition of software systems and processes.
  3. Analyze and design complex software systems using contemporary principles such as cohesion and coupling, abstraction and encapsulation, design patterns, frameworks, and architectural styles.
  4. Apply contemporary software engineering methods to planning, management, and development of software systems.
  5. Accurately communicate technical material related to all phases of the software life cycle via concise and correct documents, graphics and oral presentations.
  6. Work in small teams to develop a software system. This includes the ability to assume distinct operational roles (e.g., configuration management, quality assurance) in addition to design and implementation.
  7. Assess the social, environmental, and cultural factors arising from existing software systems as well as potential risks of proposed systems with a clear understanding of the ethical and professional responsibilities necessary for different software product lines.
  8. Relate principles of software engineering to at least one application domain where those principles can be applied.
  9. Explore new topics in software engineering or related application domains with limited oversight and input from faculty or mentors.
  10. Rapidly learn, assess, and adapt to new languages, environments, and paradigms for software development.

With the skills obtained in our program, software engineering students will be able to design and build quality software solutions that meet the customer's requirements, are delivered on time, without defects, and within budget.

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 Software Engineering 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).

 

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
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-101
Software Engineering 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
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
YOPS-10
RIT 365: RIT Connections
0
 
LAS Perspective 1 (ethical)
3
 
LAS Perspective 2 (artistic)
3
 
First Year Writing
3
 
Wellness Education*
0
Second Year
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
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
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-99
Undergraduate Cooperative Education Seminar
0
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
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
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
 
Software Engineering 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
Choose one of the following:
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.
 
  SWEN-445
   Honors 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.
 
 
Software Engineering Process Elective
3
 
Math/Science Elective
3
 
LAS Immersion 1
3
 
Software Engineering Cooperative Education (spring)
Co-op
Fourth Year
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-340
Software Design for Computing Systems
To design and develop high quality products software engineers need to understand the physical components and systems that are an integral part of these products. This understanding is critical in the fulfillment of non-functional requirements such as performance, reliability and security. This course will provide software engineering students with hardware, computer architecture, and networking domain specific knowledge. Course programming assignments will provide practical experience developing software that interfaces with hardware components and systems.
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
 
Software Engineering 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
 
Software Engineering Design Elective
3
 
LAS Immersion 3
3
 
Free Electives
12
Total Semester Credit Hours
127

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.

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: 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
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-101
Software Engineering 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
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
YOPS-10
RIT 365: RIT Connections
0
 
First Year Writing 
3
 
LAS Perspective 1 (ethical)
3
 
LAS Perspective 2 (artistic)
3
 
Wellness Education*
0
Second Year
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
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
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-99
Undergraduate Cooperative Education Seminar
0
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
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
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
 
Software Engineering 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
Choose one of the following:
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.
 
  SWEN-445
   Honors 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.
 
SWEN-732
Collaborative Software Development
This course covers processes, tools, and techniques for software development, in general, and collaborative, distributed software development, in particular. Students will learn how to design a process specific to their organization and development project needs. This includes how to select a software development life-cycle model, how to select and sequence the development and management activities of a collaborative, distributed software development team structure and dynamics, and how to define the work products, tools, and methods used to perform those activities. The Software Process Engineering Metamodel (SPEM, an Object Management Group standard) will serve to graphically describe, analyze, discuss, and improve software development processes. Special attention will be given to collaboration needs and approaches for small and large teams that may be globally distributed.
3
 
Math/Science Elective
3
 
LAS Immersion 1
3
 
Software Engineering Cooperative Education (spring)
Co-op
Fourth Year
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-340
Software Design of Computing Systems
To design and develop high quality products software engineers need to understand the physical components and systems that are an integral part of these products. This understanding is critical in the fulfillment of non-functional requirements such as performance, reliability and security. This course will provide software engineering students with hardware, computer architecture, and networking domain specific knowledge. Course programming assignments will provide practical experience developing software that interfaces with hardware components and systems.
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
 
Software Engineering 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
SWEN-640
Research Methods
Overview of the academic research methodologies used in graduate level work. Topics include: Writing style, Audience analysis, Research Planning, Experiment design and result analysis, Document structure, Research validation, and the process for submission and review to conferences and journals. In this course the student will identify and develop a detailed thesis or capstone proposal that may be continued in a subsequent course. An in-depth study of a software engineering topic will be research focused. The student selects a research problem, conducts background research, and selects appropriate technology and methodologies needed to fully conduct the project. The topic is selected by the student and is in agreement with the student’s advisor and committee. The proposal is presented in a scholarly format for approval by the advisor and committee.
3
SWEN-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
 
Software Engineering Design Elective
3
 
Engineering Elective
3
 
Professional Elective
3
 
LAS Immersion 3
3
 
Free Electives
12
Sixth Year
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 trade-offs among conflicting constraints, the documentation of architecture for use over a product’s life cycle, and the role of architecture during coding activities.
3
SWEN-790
Thesis
This course provides the student with an opportunity to execute a thesis project, analyze and document the project in thesis document form. An in-depth study of a software engineering topic will be research focused, having built upon the thesis proposal developed prior to this course. The student is advised by their primary faculty adviser and committee. The thesis and thesis defense is presented for approval by the thesis adviser and committee.
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
 
Graduate Electives
9
Total Semester Credit Hours
151

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: 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
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-101
Software Engineering 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
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
YOPS-10
RIT 365: RIT Connections
0
 
LAS Perspective 1 (ethical)
3
 
LAS Perspective 2 (artistic)
3
 
First Year Writing 
3
 
Wellness Education*
0
Second Year
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
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
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-99
Undergraduate Cooperative Education Seminar
0
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-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
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
 
Software Engineering 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
 
Software Engineering Process Elective
3
 
LAS Immersion 1
3
 
Math/Science Elective
3
 
Software Engineering Cooperative Education (spring)
Co-op
Fourth Year
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-340
Software Design of Computing Systems
To design and develop high quality products software engineers need to understand the physical components and systems that are an integral part of these products. This understanding is critical in the fulfillment of non-functional requirements such as performance, reliability and security. This course will provide software engineering students with hardware, computer architecture, and networking domain specific knowledge. Course programming assignments will provide practical experience developing software that interfaces with hardware components and systems.
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
 
Software Engineering 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
 
Computing Security Graduate Electives
6
 
LAS Immersion 3
3
 
Software Engineering Design Elective
3
 
Engineering Electives
6
 
Free Electives
6
 
Professional Elective
3
Sixth Year
CSEC-604
Cryptography and Authentication
In this course, students will learn in depth knowledge of cryptography and authentication. Students will explore various cryptography algorithms, authentication protocols, and their design and implementation. Students will work on a project to implement a cryptographic algorithm and/or an authentication protocol. The applications of cryptography and authentications in the areas of computer networks and systems and information assurance will also be investigated.
3
CSEC-742
Computer System Security
The importance of effective security policies and procedures coupled with experience and practice is emphasized and reinforced through research and practical assignments. Organization and management of security discipline and response to threats is studied. Case studies of effective and failed security planning and implementation will be examined and analyzed. The issues influencing proper and appropriate planning for security and response to attacks will be studied. To be successful in this course students should be knowledgeable in networking, systems, and security technologies.
3
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
 
Computing Security Research Electives
6
Total Semester Credit Hours
151

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: 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
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-101
Software Engineering 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
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
YOPS-10
RIT 365: RIT Connections
0
 
LAS Perspective 1 (ethical)
3
 
LAS Perspective 2 (artistic)
3
 
First Year Writing
3
 
Wellness Education*
0
Second Year
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
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
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-99
Undergraduate Cooperative Education Seminar
0
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-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
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
 
Software Engineering 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
 
Software Engineering Process Elective
3
 
LAS Immersion 1
3
 
Math/Science Elective
3
 
Software Engineering Cooperative Education (fall)
Co-op
Fourth Year
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-340
Software Design of Computing Systems
To design and develop high quality products software engineers need to understand the physical components and systems that are an integral part of these products. This understanding is critical in the fulfillment of non-functional requirements such as performance, reliability and security. This course will provide software engineering students with hardware, computer architecture, and networking domain specific knowledge. Course programming assignments will provide practical experience developing software that interfaces with hardware components and systems.
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
 
Software Engineering 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
 
Software Engineering Design Elective
3
 
Free Elective
6
 
Professional Elective
3
Sixth Year
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-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-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-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-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
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
 
Computer Science Graduate Courses
6
Total Semester Credit Hours
151

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 graduate level computer science (CSCI) course (exceptions apply)
 
Any course offered through the College of Engineering (exceptions apply)
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.
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.
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.
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
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-452
Systems Programming
Application of operating system concepts to the design of hardware interfaces for a multiprogramming environment. Laboratory work includes the development of a multiprogramming (optionally, multiprocessing) kernel with system call and interrupt handling facilities, and the building of device drivers for a variety of peripheral devices. This course provides extensive experience with those aspects of systems programming that deal directly with the hardware interface. A significant team programming project is a major component of this course.
CSCI-453
Computer Architecture
Computer Architecture is a study of the design of both modern and classic computer hardware. Topics include: a review of classical computer architectures; the design of operation codes and addressing modes, data formats, and their implementation; internal and external bus structures; architectural features to support virtual storage and page-replacement policies, high-level language features, and operating systems. Students will write programs which simulate the organization of several different processor architectures to help further their understanding of design choices.
CSCI-455
Principles of Computer Security
This course provides a broad introduction to the basic principles and practice of computer security and emphasizes policies and mechanisms for building secure and trusted computer systems. Topics include but are not limited to the following: security principles, policies and mechanisms; cryptographic tools; user authentication and access control; secure systems and networking; secure application development; secure data management; impact of mobile, web and cloud computing; intrusion detection and prevention; auditing and forensics; privacy; security management and risk assessment; and legal and ethical aspects. Presentations and projects will be required.
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-464
Xtreme Theory
A fast paced, informal look at current trends in the theory of computing. Each week is dedicated to a different topic and will explore some of the underlying theory as well as the practical applications of the theory. Sample topics may include: quantum cryptography, networks and complex systems, social welfare and game theory, zero knowledge protocols. Students will be evaluated on homework assignments and a final presentation. Offered every other year.
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-549
Software Engineering Design Seminar
Emerging topics of relevance in software engineering design.
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-711
Engineering Self-Adaptive Software Systems
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.
SWEN-712
Engineering Accessible Software
This course introduces software accessibility principles, which are relevant to the Software Engineering approach of software development. The course will survey assistive technologies, accessibility standards and their applications to new and existing software, and how to incorporate accessibility principles at the various phases of the software development life cycle. Students will deliver software based on software engineering approach to users with different abilities e.g. people with visual impairments, and older users. Other topics include mobile accessibility, accessibility testing, validation technologies, and tools.
SWEN-745
Software Modeling
Modeling plays a pivotal role during the software lifecycle during the pre-construction and post-construction activities of the software lifecycle. During the pre-construction stage, models help software engineers understand, specify, and analyze software requirements and designs. During the post-construction stage, models can be used to analyze software systems while in operation. This kind of analysis includes reliability and safety issues as well as timing constraint analysis. (Department approval)
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.
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.
SWEN-789
Graduate Special Topics (Design Focused)
This course will cover specialized topics in software engineering. Such topics are often considered emerging and advanced. Graduate standing and specific prerequisites will be noted upon specific proposal of a course.

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.
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.
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.
SWEN-772
Software Quality Engineering
This course begins with an exploration of the concepts underlying quality systems and the use of metrics. Students are encouraged to discuss the advantages as well as the limitations of systems and quantitative approaches, with a view to understanding the 40 importance of interpretation in metrics usage and of matching quality systems choices to organizational objectives and culture. They learn the use of modern metrics such as DRE, PCE, COQ/COPQ, reliability objectives and SUMI scores through exercises in analyzing and interpreting charts. This is complemented with a project where they work in teams to design an appropriate quality system for a specific project/organizational situation, and discuss the application and analysis of its evaluation experimentation as a means of improving the quality aspects of subject project/organizational situation.
SWEN-789
Graduate Special Topics (Process Focused)
This course will cover specialized topics in software engineering. Such topics are often considered emerging and advanced. Graduate standing and specific prerequisites will be noted upon specific proposal of a course.

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.
ECON-405
International Trade and Finance
This course first surveys the sources of comparative advantage. It then analyzes commercial policy and analyzes the welfare economics of trade between countries. Some attention is paid to the institutional aspects of the world trading system. Finally, the course introduces the student to some salient notions in international finance such as national income accounting, the balance of payments, and exchange rates.
ECON-430
Managerial Economics
Managerial Economics involves the application of economic theory to business decision-making. Most of the emphasis is microeconomic in nature, the theory of the firm and consumer theory, but there is some macroeconomic influence, particularly in the forecasting area. Since this is an applied economics course, it has a strong quantitative flavor.
FINC-220
Financial Management
Basic course in financial management. Covers business organization, time value of money, valuation of securities, capital budgeting decision rules, risk-return relation, Capital Asset Pricing Model, financial ratios, global finance, and working capital management.
HRDE-386
Human Resources Development
A one-semester, three-credit course in human resource development provides the prospective manager practical information on methods to enhance the productivity, quality, and effectiveness of an organization through the creation of an environment where individual and collective performance and development has primacy. The course requires students to assimilate course material related to the following: to organizational strategy, systems thinking and legal compliance; workforce development, career development of employees; individual development and training; measuring outcomes; human resource processes and effective communications. Students integrate theoretical classroom concepts with practical knowledge and work experiences. As part of the course: students continually practice effective communication skills; students may work in teams; and are expected to engage in critical and innovative thinking. Students' understanding of human resource development is intended to help them enhance organizational effectiveness through implementing processes designed to develop and train employees.
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*

BIOG-101
Explorations in Cellular Biology and Evolution
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.
BIOG-102
Explorations in Animal and Plant Anatomy and Physiology
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.
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-131
General Chemistry for Engineers
This rigorous course is primarily for, but not limited to, engineering students. Topics include an introduction to some basic concepts in chemistry, stoichiometry, First Law of Thermodynamics, thermochemistry, electronic theory of composition and structure, and chemical bonding. The lecture is supported by workshop-style problem sessions. Offered in traditional and online format.
CHMG-141
General and Analytical Chemistry I
This is a general chemistry course for students in the life and physical sciences. College chemistry is presented as a science based on empirical evidence that is placed into the context of conceptual, visual, and mathematical models. Students will learn the concepts, symbolism, and fundamental tools of chemistry necessary to carry on a discourse in the language of chemistry. Emphasis will be placed on the relationship between atomic structure, chemical bonds, and the transformation of these bonds through chemical reactions. The fundamentals of organic chemistry are introduced throughout the course to emphasize the connection between chemistry and the other sciences.
CHMG-142
General and Analytical Chemistry II
The course covers the thermodynamics and kinetics of chemical reactions. The relationship between energy and entropy change as the driving force of chemical processes is emphasized through the study of aqueous solutions. Specifically, the course takes a quantitative look at: 1) solubility equilibrium, 2) acid-base equilibrium, 3) oxidation-reduction reactions and 4) chemical kinetics.
CSCI-262
Introduction to Computer Science Theory
This course provides an introduction to the theory of computation, including formal languages, grammars, auto-mata theory, computability, and complexity.
CSCI-263
Honors Introduction to Computer Science Theory
This course provides a challenging introduction to the theory of computation with an emphasis on problem solving. Topics include formal languages, grammars, auto-mata theory, computability, and complexity.
ECON-403
Econometrics I
Econometrics I provides students with the opportunity to develop their skills in applied regression analysis. It covers various regression estimation techniques, data preparation and transformation, and the interpretation of regression results. There is particular emphasis on the dangers of misuse of regression techniques. The course covers regression analysis for both cross-sectional and time series data.
ECON-404
Mathematical Methods: Economics
Mathematical Methods: Economics provides students with an introduction to quantitative techniques used in economics such as matrix algebra, one- and multi-variable differential calculus, and unconstrained and constrained optimization. The emphasis of the instruction is on the application of these techniques to fortify and broaden a student's understanding of traditional economic topics like utility maximization, cost minimization, duality in consumer theory, expected utility, and profit maximization.
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-252
Probability and Statistics II
This course covers basic statistical concepts, sampling theory, hypothesis testing, confidence intervals, point estimation, and simple linear regression. The statistical software package MINITAB will be 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.
MEDG-101
Human Biology I
This course is one of a two-course set of courses that explores the biology of the human body. This course focuses on: cells, their structure, and organization; the human reproductive cycle; principle of genetic inheritance; transmission of disease and the body’s defense against disease. Recommended to concurrently take: MEDG-103 Human Biology Laboratory I *Note: Taken alone, this course fulfills the Scientific Principles Perspective. When taken with MEDG-103 the two courses together fulfill the Natural Science Inquiry Perspective
MEDG-102
Human Biology II
This course is one of a two-course set of courses that explores the biology of the human body. This course focuses on the examination of the body's structure (anatomy), its function (physiology), the principle of homeostasis that governs the integrated control of all body organ systems, and various disease states (pathology) that affect its health. Recommended to concurrently take: MEDG-104 Human Biology Laboratory II *Note: Taken alone, this course fulfills the Scientific Principles Perspective. When taken with MEDG-104 the two courses together fulfill the Natural Science Inquiry Perspective
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.
PHYS-225
Introduction to Computational Physics and Programming
This course introduces methods for using computers to model the behavior of physical systems. Students will learn how computers represent numbers, limits of computation, how to write computer programs, and to use good programming practices. Students will also apply numerical methods of differentiation and integration, and numerical solutions to differential equations in physical situations.

Accreditation

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

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.