Division of Computing & Software Systems
The Division of Computing & Software Systems offers high academic standards and expectations with a reputation characteristic of the University of Washington.
We offer software engineering oriented computer science degrees that emphasize how to think about, design, and create quality software-enabled systems that have real impact in organizations and the world. Our degrees provide the broad educational background valued by employers and by computing professionals seeking rewarding careers. Our aim is a transformative educational experience that not only provides fundamentals and technical skills, but also the perspective to understand how to be an effective, confident, and respected member of our profession.
- Bachelor of Arts in Applied Computing, which emphasizes connections between computing and other fields.
- Bachelor of Science in Computer Science and Software Engineering, which focuses on software development. Within this program, you can also choose the Information Assurance and Cybersecurity option, which will appear on your transcript.
- Bachelor of Science in Computer Engineering, which combines education in hardware and software development.
- Bachelor of Arts in Interactive Media Design, which is lead by both the School of STEM and School of Interdisciplinary Arts & Sciences (IAS).
If you’re switching careers you can take our Graduate Certificate in Software Design & Development to immediately move to a new job or to prepare you for success in graduate studies.
You can pursue studies at the cutting edge of computing research and implementation through our Master of Science in Computer Science and Software Engineering or our Master of Science in Cybersecurity Engineering.
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.
Below are listed the Foundational and Technical competencies, which are achieved by every undergraduate student in CSS:
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.
- 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.
- 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.
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.
- 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.
- 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.