CSSE Curriculum

This page contains information on the curriculum of the Bachelor of Science in Computer Science & Software Engineering (CSSE).

  1. General education requirements
  2. Entry prerequisites
  3. Core requirements
  4. Elective requirements
  5. Information Assurance and Cybersecurity (IAC) option
  6. Petitions
  7. Learning goals

Entry prerequisites

Visit our Admissions page for information on prerequisite coursework.

Not sure about how to approach programming? Visit our Getting Started with Computer Programming page.


General education requirements

All UW students must complete a common set of general education requirements. As a CSSE major, you will have already completed the English Composition (C), Additional Writing (W), Natural Science (NSc), and Reasoning (R) requirements by taking your entry prerequisite and CSSE core classes, but make sure to plan for completion of the following:

  1. Diversity (DIV) – 5 credits (almost always also fulfills A&H or SSc; was only 3 credits prior to autumn 2023)
  2. Arts & Humanities (A&H) – 15 credits (cannot overlap with SSc)
  3. Social Sciences (SSc) – 15 credits (cannot overlap with A&H)

These general education courses can overlap with the Elective courses for your major.


Core requirements

  1. Statistics (choose one course)
  2. CSS 301: Technical Writing for Computing Professionals
  3. CSS 342: Data Structures and Algorithms I
  4. CSS 343: Data Structures and Algorithms II
  5. CSS 350: Management Principles for Computing Professionals
  6. CSS 360: Software Engineering
  7. CSS 370: Analysis and Design
  8. CSS 422: Hardware and Computer Organization
  9. CSS 430: Operating Systems
  10. CSS 497: Capstone

Elective requirements

CSS Electives (25 credits / usually 5 courses)

All CSS electives must be 200-level or higher, and they may not be courses that are already required for your degree. Of the 25 credits:

  • At least 15 credits must be 400-level
  • Up to 10 credits may be 200-level
  • Up to 10 credits combined of CSS 397 (Internship), 498 (Independent Study), or 499 (Undergraduate Research)
  • Up to 10 credits combined of CSS 290, 390, or 490 (Special Topics)

300-400 Level Electives (15 credits / usually 3 courses)

  • May be additional CSS electives or electives from other subject areas
  • These courses may overlap with your General Education requirements (A&H, SSc, DIV, etc.), above, as long as they are 300-level or higher.

Information Assurance and Cybersecurity (IAC) option

Information Assurance and Cybersecurity (IAC) is a Computer Science & Software Engineering pathway that covers the creation and management of safe and secure systems. All organizations—large or small, public or private—rely on secure systems for individual and organizational privacy and security. The IAC option prepares students to create, deploy, and manage systems that ensure the security of any organization.

This tri-campus pathway allows students to select from an approved list of courses offered from all three UW campuses: Bothell, Seattle, and Tacoma. The electives at each campus emphasize the strengths found in the programs offered there, and course topics include information assurance policy, secure coding, and networking and systems security.

Declaring the IAC option

After admission into the general CSSE major, you can contact the advising office at cssadv@uw.edu to switch into the IAC option. Please include your name and student ID number.

Requirements

IAC-option students take the same core courses as those of the general CSSE major, but replace the 25 credits of “CSS Electives” with the courses below:

  1. CSS 310: Information Assurance and Cybersecurity
  2. Minimum 15 credits (3 courses) of elective coursework from the lists below. Only one networking class (CSS 432, INFO 314, or T INFO 250; marked with an asterisk *) may be taken.
  3. Minimum of 5 additional credits (usually 1 course) of 200-level or higher CSS Elective coursework in any topic.

UW Seattle IAC electives

UW Bothell IAC electives

UW Tacoma IAC electives


Petition

Computing-related courses that are not included on the core or elective requirements lists are considered on a case-by-case basis. If you have a syllabus, letter from the instructor, or other detailed description for the class you wish to use as an elective, you may submit a petition to request for the course to count.

Learning goals

The learning objectives for the Bachelor of Arts in Applied Computing and the Bachelor of Science in Computer Science & Software Engineering are described in terms of competencies achieved by students within the CSS programs.

The Foundation Level includes very broad competencies that are found in every CSS core course. The Technical Level is a set of broadly important competencies specific to the software engineering and computer science professions, to be developed in every undergraduate CSS education, across the set of required core courses. Competencies specific to the interests and needs of the individual student are achieved in the CSS advanced elective courses.

Foundation Level

Analysis & Problem Solving

  • Information Gathering: Effectively searches out and organizes pertinent information before making decisions or taking actions.
  • Efficiency: Identifies ways to solve problems or complete tasks smoothly and effectively; choose the optimum solution form and set of alternative possibilities.
  • Systemic Thinking: Follows a well-ordered and logical approach to analyzing problems, organizing work, and searching for solutions.
  • Thoroughness: Ensures that work is done correctly, completely, on time and to the highest standards.
  • Creativity: Challenges existing assumptions, proposes novel alternative ways to framing or solving a problem, pushes the boundaries of knowledge.
  • Learning by Doing: Demonstrates the ability to learn continuously, capitalize on mistakes, exploit new knowledge, increase productivity over time.

Interpersonal Skills

  • Collaboration & Team Building: Collaborates effectively with others to achieve a common objective, creates an environment that fosters and sustains successful teamwork.
  • Leadership: Champions new ideas, persuades and influences, breaks logjams, and promotes momentum toward solving problems.
  • Writing & Speaking: Expresses ideas correctly and convincingly in reports, memos and other forms of written communication
  • Managing Change & Uncertainty: Adapts to changing circumstances, deals positively with uncertainties and contingencies, manages crises effectively.

Management Skills

  • Project Management: Plans, monitors, and controls projects; ensures efficient utilization of resources; keeps projects on schedule and within budgeted resource allocation.
  • Project Administration: Administers and maintains projects, using appropriate monitoring tools and complying with relevant standards and reporting requirements.
  • Risk Management: Foresees and takes action pro-actively in anticipation of future problems and opportunities.
  • User Orientation: Gains understanding of users needs by immersing self in users environment; carefully studies user’s requirements; puts self in users shoes.

Technical Level

General Business, Social & Technical

  • Business Case Justification: Justifies project expenditures, equipment and other resources in terms of business costs, benefits and risks.
  • Technology Evaluation and Selection: Evaluates and selects software and hardware appropriate to the application, architecture and resource constraints; maintains awareness and understanding of emerging technology.
  • Process Reengineering: Performs business requirement analysis, using appropriate tools and methodologies to maximize organizational performance.
  • Mathematical Principles and Techniques: Understands theory and application of numerical, statistical, set theory, and other mathematical techniques in the context of applications and systems programming.
  • General Software Systems: Has general understanding of the principles and applications of software development and design; understands the relationship between software development and other functions in the business organization.
  • Social Implications of Science & Technology: Understands the interaction between science and technology and the broader social, political, and organizational environment; critically assesses ethical implications of computing technology.
  • Technical Writing: Designs and writes effective guidelines, standards, procedures, processes, applications, using appropriate methods, tools and delivery options.

Application Programming

  • Requirements Definition and Analysis: Elicits and clearly defines user\’s needs, assessing potential solutions against benefits and risks; uses appropriate tools for analyzing requirements and creating appropriate data and work flow models.
  • Software Development Life Cycle: Understands and effectively manages the process of developing designing, testing, and delivering a software application.
  • Functional Design: Identifies system platform, components, inputs, interface requirements, and dependencies which ensure that the system will achieve its objectives.
  • Testing: Plans, executes, and validates results of unit, systems, and acceptance testing to ensure conformity to user\’s requirements.
  • Implementation: Plans and executes smooth integration of an application into the computing environment.
  • Programming: Comprehends and applies principles of programming; effectively translates design specifications into appropriate software components.
  • Collaborative Programming Techniques: Uses methods and tools that support cooperative software development among users in different locations.
  • Quality Assurance: Employs appropriate quality assurance standards and procedures to ensure delivery of bug-free applications that meet user\’s needs.

Infrastructure/Operations

  • Technology Integration: Integrates various technologies, systems, applications, database and components across multiple platforms.
  • Hardware Architecture: Understands hardware components, architecture, and interrelationship among hardware, software, and operating systems.
  • Performance Measurements & Tuning: Uses appropriate performance metrics to monitor, optimize and troubleshoot system performance.
  • Operating Systems: Understands operating systems fundamentals including: file systems, process, and memory management.
  • System Administration: Understands appropriate procedures and techniques for management and administrating a network, data center, or other computer system; manages changes to the computing environment.
  • Technical Training and Support: Provides user support through analysis and problem solving to facilitate installation, implementation, maintenance, education, and documentation of computer hardware and software systems.