Division of Computing & Software Systems
The Division of Computing & Software Systems (CSS) offers high academic standards and has a strong reputation for excellence. Experience 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.
Faculty
Our CSS faculty bring together expertise in cutting-edge research topics, industry leadership, and hands-on teaching, and are committed to ensuring students gain the skills and knowledge to thrive in a rapidly evolving computing world.
Research areas
View CSS faculty by research areas.
- Artificial Intelligence/Machine Learning
- Computational Biology and Health Care Computing
- Computer Science Education
- Cybersecurity
- Data Computing/Data Science/Scientific Computing
- Graphics, Multimedia, and Computer Games
- Human Factors/Human Computer Interaction
- Parallel, Distributed, Cloud, and Edge Computing
- Software Engineering
Specialized computing labs
CSS labs serve as hubs for collaboration, discussion, research, seminars and social activities. Each lab offers a diverse mix of platforms and software. Learn more about CSS labs, access and support.
- Advanced Projects Lab
- Open Lab
- Embedded Systems Lab
Programs
The division offers a combination of Computing & Software Systems undergraduate and graduate course offerings and skills courses so students can explore diverse areas and focus on what interests them most.
Undergraduate
From learning foundational and technical skills to real-world application, students gain the knowledge and skills to succeed.
Graduate
Enter the field of software engineering with a graduate certificate or pursue advanced studies with a master’s degree.
Undergraduate 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.