CSE is an ever-growing field, and a CSE degree provides an amazing breadth of opportunities. To meet the needs and career goals of our unique students, we have designed our degree requirements to be quite flexible, particularly at the 400-level. We want our students to talk to advisers and professors to determine what courses they will find most useful and enjoyable.
However, many students find some structure and guidance useful. Degree requirements are naturally important, but what you must take to graduate differs from what you ought to take to achieve your goals. It may be unclear which courses are particularly relevant for some of the more common job titles or career paths you may be considering.
We therefore designed this page to be a starting point in directing you toward specific employment specializations.
A few recommendations apply regardless of career interest. Most students benefit tremendously from doing internships. Internships complement coursework by allowing students to work intensively on a single project using modern technology. Likewise, capstones are valuable for most career paths, again, because employers value project experience in addition to understanding relevant concepts. Research experience is useful regardless of whether you intend to pursue a graduate degree, because the ability to work independently is valuable in many career contexts. It is also an ideal way to get to know individual faculty -- and have them know you so they can give you personalized advice.
Many employers care deeply about "soft skills" -- written and oral communication, teamwork, time management. Communicating your ideas and organizing yourself are necessary for your technical skills to be useful. Gain experience in these areas.
We encourage you to take courses that interest you even if (or especially if) they are not listed for your career of interest -- a fresh perspective is often the seed of creativity.
In a fast moving technical domain like computer science and engineering, continuing education (either formally or informally through self-directed learning) is a necessity -- the courses of studies listed below are intended to help you get started in a topic. They are by no means a complete set of everything you need to know to have a successful career in any of these areas.
More specifically in terms of our curriculum, most students should take more than the minimum number of 300-level courses. The minimum is allowed for students who want to move quickly into a narrower specialty. In particular, while 331 is not required for CompE and 352 is not required for CS, we believe most students should take both courses. Software-development skills and knowledge of hardware are extremely valuable. Because this advice applies generally, 331 and 352 are not explicitly listed under most of the specializations.
The following list of "specializations" are typically either areas of computing or job titles or both. Unfortunately, most job titles are not used consistently by different companies -- as one example, "software engineer" can range from meaning "entry-level programmer" to "advanced software architect." Nonetheless, we try to follow the most common usage.
For each specialization, we list the most important elective courses. Thist does not imply that other courses are not equally important, but these are the key courses that cover topics that define the specialization. We also list other recommended courses for each specialty.
Graphics, Vision, Games, and Animation
Informations and Commmunications Technologies for Development (ICTD)
Interactions with Biology, Bioengineering, Medicine, and Genomics
Ph.D. in CSE
Robotics and Control Systems
User Interface and Human-Computer Interaction
A reverse listing of specializations sorted by course number:
Courses in Computer Science & Engineering
Courses in Electrical Engineering
Courses in HCDE
Courses in Informatics
Courses in Mathematics
Courses in Medical Education & Biomedical Informatics
Courses in Statistics
There are multiple facets to working with databases, and different jobs may emphasizes different facets. The application facet requires you to have a good understanding of database design, SQL, XML, jdbc: definitely take 344 and strongly consider 484 and 403. If you want to be a true expert, however, it will tremendously help you to know how databases work inside, how they are implemented, so make sure to take 444! 440 may be helpful for creating applications that are easy to use, so you should consider it. For the server facet (database administrator) you must have a good understanding of query processing techniques, types of indices, transactions, and anything that deals with systems performance; take 344, 444, 484, and very strongly consider 451. For the data analyst/data-intensive computing facet, you need to have some exposure to massively parallel data processing techniques such as MapReduce, or Pig Latin, and some basics in data mining: take 344, 444, 446.
- Highly Recommended Courses: CSE 344, 444, 451, 484, 446
- Other Recommended Courses: CSE 403, 440
Machine learning and data mining are increasingly important activities and there is extremely high demand for people skilled in these areas. For example, data mining is used to tune Web search engine ranking functions, to evaluate the merit of credit card applications, to determine when a retail store should reorder products, and even to optimize the energy efficiency of advanced CPU architectures. A strong background in statistics (eg, STAT391) and algorithm design (421) will be very useful when designing data-mining systems. 446 is the core course in the area and 473 will broaden your knowledge of AI methods. Frequently, the data to be mined is stored in a large relational DBMS; deep knowledge of database design and implementation (444) will let you create a much more effective system. If you are interested in Web applications of machine learning, consider 454.
- Highly Recommended Courses: CSE 446, 473, 421 & STAT 391
- Other Recommended Courses: CSE 444, 454
Description coming soon!
More information about a CS education career can be found on this page.
- Highly Recommended Courses: CSE 492T, CSE 590E, EDUC 251, EDC&I 351
- Other Recommended Courses: E E 406, EDUC 401
Embedded systems are designed to fit into the fabric of the environment around us. An embedded system is distinguished from a general-purpose system by some very important properties: (1) an embedded system usually interfaces computing with the physical world (sensing and actuation); (2) it is not intended to be reprogrammed by the user although some parameters may be specified; and (3) it has user interfaces that are optimized for the task so as to be as seamless as possible. A good example is an anti-lock breaking system in a car where sensors measure the performance of the brakes and a micro-controller computes the pressure to actuate on the brake disks; the manufacturer may occasionally update the software but not the car owner; and the user interface is the simple brake pedal with which drivers are already familiar. The distinctions between embedded and general-purpose systems are not always so precise. A modern mobile phone is certainly programmable (the user can download new apps as with a PC) but there are components such as the GSM module (performing the communication between the phone and cellular infrastructure) whose software elements are rarely changed or upgraded. Similarly, the GPS module of the phone performs the specific function of determining a position on Earth from signals sent by orbiting satellites. An embedded system designer is likely to focus on these task-specific modules while coordinating their use in the more general-purpose phone. Other excellent examples of embedded systems are modern video game controllers that use a user's physical gestures (sensed through embedded accelerometers or cameras) to control game elements. Embedded systems designers and engineers work in a variety of industries and on varied applications ranging from medical instrumentation and aerospace to mobile devices and smart environments.
The most core courses to an embedded systems career stress a deep understanding of how devices connect to the physical world and how real-time control software can be used to control physical systems and manage highly concurrent tasks.
- Highly Recommended Courses: CSE 333, 369, EE 371, 451, 461, 474, capstone: 477
- Other Recommended Courses: CSE 440, 467 & EE 205 or EE 215
- Other courses you might consider depending on areas of interest: CSE 401, 403, 484, EE 417 (Modern Wireless Communications), EE 442 (Digital Signals and Filtering), EE 484 (Sensors and Sensor Systems)
Graphics, Vision, Games, and Animation
These exciting specialties require creativity, as well as computer science and math skills.
Computer graphics engineers develop software for creating images,videos, and even 3D worlds. Computer vision engineers analyze 2D, 3D and even 4D data with goals such as object recognition, video analysis, content-based image retrieval, 3D reconstruction and more. Game designers use graphics and HCI skills to create video games for people to play and enjoy. Animation production encompasses the whole process of creating animated films. Our animation capstone sequence is interdisciplinary, including students from other departments.
- Highly Recommended Courses: CSE 457/458 (Graphics), CSE 455/473 (Vision), CSE 457/481D (Games), CSE 456/458/459/460 (Animation Production)
- Other Recommended Courses: CSE 403, 421, 446 & EE 440
Hardware designers implement computational devices using a variety of technologies at a wide range of levels. For example, computer architects design and implement processors using high-level components such as memories, registers, and arithmetic components, while embedded systems designers assemble application-specific systems using microcontrollers, memories, wired and wireless communication components and a large variety of sensor devices. Other hardware engineers design hardware components and systems at the gate or transistor level using FPGA (Field-Programmable Gate Array) or VLSI chip technology. Today's FPGAs allow designers to construct highly optimized hardware systems for computationally intensive applications like image processing (e.g. face and object recognition and transcoding), encryption/decryption and data compression using cheap and reusable hardware. The area of Computer-Aided Design involves designing algorithms for compiling high-level hardware descriptions into low-level circuit implementations.
- Highly Recommended Courses: CSE 369, CSE/EE 371 467, 474, 477
- Other Recommended Courses: CSE 451, 461
- Other courses you might consider depending on areas of interest: CSE 401 (techniques in compiling can be useful for embedded systems and configurable computing systems), 421 (Computer-Aided Design requires a strong background in algorithms), 446 (machine-learning techniques are widely used in embedded systems) & EE 476 (Digital Integrated Circuit Desing: Transistor-level design of digital systems, 477 (VLSI II: Advanced Digital IC Design)
Informations and Communications Technologies for Development (ICTD)
In many nations around the world, computing systems are seeing a radically different development and evolution than what has happened in heavily industrialized nations. For example, the dominant computing device is the mobile phone rather than the laptop or desktop. Phones are more mobile, more easily powered where the power infrastructure is less developed, and have communication capability for both voice and data (SMS and GPRS). Arguably, the phone is the truly personal computer that everyone around the world carries with them. A new engineering discipline is emerging that solves problems using appropriate technology for the many environments around the world that have many fewer resources than our own. It often explores a very different range of designs and solutions than what might be appropriate within our familiar environment. The field of ICTD focuses on deploying technology to help spur economic and social development as well as improving health and education services. Application areas cover improving public health (both clinic and community outreach efforts), educational applications (traditional schools as well as adult education), helping illiterate populations bridge the digital divide, and facilitating financial instruments that operate with the smaller amounts of poorer economies. ICTD systems must carefully account for economic, cultural, and language aspects of the communities and users where they are deployed. ICTD is one of the more inter-disciplinary branches of CSE.
The core courses for ICTD (from a CSE perspective) are very close to those for embedded systems design but with a stronger emphasis on information system design. Many courses in the Information School and Department of Human-Centered Design and Engineering are also very appropriate as are courses in areas of public health, economic policy, and education (depending on student interests). You may also want to attend the Change seminar on Thursdays at noon (CSE590C1) to hear speakers talk about work on ICTD both at UW and elsewhere - attendees are undergrads, grads, researchers, and faculty from around campus and the greater Seattle area.
- Highly Recommended Courses: CSE 344, 440, capstone: 490D (or 476, 477, 481 depending on interests)
- Other Recommended Courses: CSE 403, 454, 461, 474
- Other courses you might consider depending on areas of interest: HCDE 417 (Usability Research Techniques), 418 (User Experience Design), 419 (Survey of Concepts in Human-Computer Interaction) & INFO 360 (User-Centered Design), 380 (Information Systems Analysis and Management)
Interactions with Biology, Bioengineering, Medicine and Genomics
One of the most exciting aspects of computer science today is its promise to cross over from the "core" to make significant contributions in disparate application domains, and biology/medicine are among the most promising of these connections. They are undergoing a sea change, with new technologies such as genome sequencing providing floods of data that will elucidate fundamental biomedical truths, if we can provide the appropriate computational tools to expose them. This encompasses a very broad landscape, including:
- Bioinformatics/computational biology are aimed at knowledge discovery from such data sets.
- Synthetic biology aims at modeling/manipulating natural biological systems for our benefit.
- Biomedical and health informatics works on using electronic biomedical data and information to advance research and improve health.
- Computational neuroscience seeks to understand how the brain works through computational models and simulation.
- Brain-computer interfacing involves using signals from the brain to directly control external devices.
- Neural engineering utilizes techniques from engineering to both understand the brain and build systems that interface with the brain such as neural prosthetics and implants. It encompasses areas such as computational neuroscience and brain-computer interfacing.
Given the breadth of the agenda above, no one curriculum will suit every student, so be flexible, talk to advisers and faculty, and consider the following courses:
- Highly Recommended Courses: CSE 427/428 (Computational Biology, 486/487/488 (Synthetic Biology)
- Other Recommended Courses: CSE 341, 344, 444, 421, 446, 473 & STAT 391 & MEBI 498 (an undergraduate topics course on Biomedical Informatics)
The motivation for many of the courses above will be self-evident, but to amplify a little, the scale and nature of the data make databases, statistical approaches, and algorithms very relevant, and common use of a wide variety of languages, e.g., Perl, Python, R, Matlab, motivates 341. There also are many relevant courses in Chem/Biochem/Biology/Genetics/Bio Engineering/etc. Unfortunately, most have significant prerequisites, but if they fit your schedule, go for it! As just one of many examples, BIOL 180/200 (Intro Biology) -> GENOME 371 (Intro Genetics) -> GENOME 372 (Genomics and Proteomics) -> GENOME 373 (Genomic Informatics) would be a great series for anyone with an interest in computational biology.
- Highly Recommended Courses: CSE 421, 431
- Other Recommended Courses: STAT 391
Ph.D. in CSE
(See our page on Graduate School.)
An option for every student to consider is further study in CSE after graduation. This can be any combination of self-directed study, a masters degree program, and/or a Ph.D. program. It is not possible for us to fit everything worth learning about CSE in the scant number of credits available in the undergraduate degree program. Instead, our aim at the undergraduate level is to provide a foundation for students to be able to learn more, either on their own or as part of a graduate degree program. The field of CSE moves ahead quickly! It is crucial to stay current with new technologies to stay productive.
Masters degree programs largely fall into two flavors: primarily coursework, or a mixture of coursework and independent research. Graduate coursework generally focuses on bringing students to the state of the art in a particular sub-area of CSE, while independent research targets the creation of new knowledge in the construction of leading edge computer products and services. Clearly, to do research in an area, a student needs to understand the current state of knowledge in that area. At UW, the Professional Master's Program (PMP) is primarily coursework; students in the UW CSE fifth year masters program can pursue either path; and students admitted in the Ph.D. program focus on research while completing several courses early in their graduate career.
Ph.D. programs in CSE are primarily designed for those interested in research careers. Although most Ph.D. programs involve coursework, the main focus is on pushing beyond the state of what is already known. Creativity, insight, teamwork, self-motivation, leadership, presentation and writing skills are all highly valuable to researchers, and in fact, the technical leadership of most companies excel at many of these same qualities. There is often a blurry line between academic research and new product development. Startups in particular value students who are able to solve technical problems where the solutions are not well-understood in advance. There is no textbook that says how to design an iPhone. It is not an accident that the CEO of Google has a Ph.D. in computer science; half of all Google hires from UW have advanced degrees. Thus, research experience is valuable, even if you do not pursue an academic career.
Almost all students entering CS Ph.D. research programs will have some research experience before entering graduate school. Research experience can be gained in a number of ways. Independent study with a faculty member or graduate student is the most common. However, it is not a requirement that you complete an honors thesis in order to apply to graduate school. Other paths include capstone projects and work experience. For example, capstone projects often involve independent study and creative problem solving. Working at an early stage startup is another good way to practice research skills -- basically any environment where the problem is poorly specified, the solution is unknown, and success in uncertain -- in other words, the opposite of a typical undergraduate class! It can take years for research ideas to make their way into practice, if at all, so the ability to sustain motivation and progress in the absence of deadlines is essential.
Advice on applying to graduate school could fill a book, so it is best to talk specifically with a faculty member, preferably your research advisor, well before you apply. Applications are typically due in December, so it is best to start planning by the end of junior year. Some students work for a few years before applying to graduate school; this added experience can be quite helpful. We should note, however, that it is more common for students to apply to graduate school in their senior year. It is also possible to apply to graduate school as a senior, and then to defer for a year to work in industry.
Many graduate schools are extremely competitive. For example, UW CSE receives over 1000 applications for new Ph.D. students per year. On the other hand, several UW CSE undergrads enter Ph.D. programs each year, and probably an equal number beyond that would be able to be admitted to a competitive grad school but choose to go directly to industry. The CSE faculty are very knowledgeable as to which schools have strong programs in your area of interest, so make sure to consult them before applying. This type of information is very difficult to unearth on your own.
For graduate applications, various factors are considered. In rough priority order: recommendations from faculty who worked directly with you on a research project; recommendations from faculty who taught you in a class or two, or for whom you have TA'ed; verbal/math GRE score; GPA; personal statement. In particular, the GPA is not particularly correlated with success in graduate school, except in one respect: most graduate courses run at two to three times the speed of a typical undergraduate course, so graduate schools do consider whether you would be able to keep up. Some schools are now conducting phone interviews of some candidates; for this it helps to attend research seminars (590) in your area of research, and to practice by talking to graduate students about their work and your work. Finally, to complete a Ph.D. literally requires you to write a book, and so there is a huge advantage to becoming an accomplished writer before entering graduate school.
- Highly Recommended Courses: CSE 498A/498B (research), 400-level courses in area of interest
- Other Recommended Courses: 500-level courses in area of interest, CSE department colloquia, 590-level seminars in areas of interest, CSE 421/451, TA experience, writing experience
- CSE 500-level courses, including 590-level seminars, require permission of the instructor. Email is usually sufficient. Department colloquia are open to the public.
Robotics and Control Systems
Good math skills and the desire to build complex systems that interact with the world are important preconditions for success in robotics.
Robotics is about developing systems that can operate effectively in the real world. Robotics engineers develop algorithms that can handle noisy sensor data, learn models of the environment, and make decisions in real time. Modern robotics encompasses areas such as optimal control, probabilistic reasoning, state estimation, machine learning, and artificial intelligence. Robotics tools are applicable to a wide range of problem spaces beyond robotics, including speech recognition, machine vision, analysis of noisy data streams, interactive computer gaming, and brain-machine interfacing.
- Highly Recommended Courses: CSE 446, 455, 473 & STAT 391
- Other Recommended Courses: CSE 421, 474 & EE 215
An increasing number of areas, not just traditional areas like physics, need high-performance computing that typically involves solving large numerical problems using large-scale parallel processing. People in this area benefit from expertise in applied mathematics as well as computer systems and software development. Despite increasing overlap with data mining and other areas, high-performance computing remains a distinct community.
- Highly Recommended Courses: CSE 421, 461, 471
- Other Recommended Courses: CSE 451, STAT 391, and numerical analysis courses in the MATH or AMATH departments. See, in particular, the numberical analysis sequence MATH 464/465/466 or the optimization sequence MATH 407/408/409
Computer-security issues span almost all of computer science. Computer-security practitioners work at the hardware level, with embedded systems, with software, and with improving the usability of computer security systems.
Computer security training can also be a valuable complement to anyone working in computer science, since -- unfortunately -- computer security issues arise all too frequently with deployed computer systems.
The courses below provide a core foundation in computer security. 484 is the keystone course. However, one tenet of computer security is that it is much harder to defend systems than attack systems. That is because an attacker needs to find only one way to succeed, whereas a defender needs to protect against all possible attacks. Computer-security issues can also affect all parts of a system, from the hardware to the user interface. Therefore, a computer-security practitioner should have as broad of a working knowledge in computer science as possible.
- Highly Recommended Courses: CSE 154, 403, 440, 451, 461, 484
- Other Recommended Courses: CSE 421, 444, 446, 474, 490's
Systems developers create and manage the software environment for application development and execution. A systems developer may write operating systems (e.g., for a cell phone, desktop, or data-center server), data-center infrastructure (distributed file systems, web-server software, networking stacks), databases, compilers, networking and security.
The most salient characteristic of systems software is the need for reliability. If your operating system breaks, the user typically can't get anything else done, and it might even corrupt their data permanently. The flaw might even provide an opportunity for a hacker to gain control over the user's computer. The need for reliability is equally true for data-center software, the network, the compiler, and so forth. Making this even more challenging, systems software is often inherently complex; for example, the back-end software for a data center must deal with concurrency, recovery from node failures, resource overload conditions, and attacks from miscreants.
Thus, central to the curriculum for a systems developer is systems construction experience (via project oriented systems classes like 333 and 451, as well as internships and software capstones), breadth of knowledge of how systems work and how they break (461 and 484), principles of software engineering practice (331 and 403), technology trends (352 and 471), and specialized courses depending on time and interest (e.g., for compiler construction, one would want 341, 401).
- Highly Recommended Courses: CSE 331, 333, 451, 461, 484, distributed systems, software capstone (CSE 454 or 481)
- Other Recommended Courses: CSE 341, 352, 401, 403, 444, 474, 471
Software engineers design, build and evolve software in a broad variety of domains. Although many focus on specific aspects of the software lifecycle -- requirements engineering, architecture and design, testing and analysis, etc. -- software engineers collectively address software systems from "womb" to "tomb." Software engineers need to understand the needs of users, design approaches to manage software complexity and to ease change over time, ways to assess the properties that the software product does or does not have, algorithmic and implementation techniques to build efficient software, and more. Making effective trade-offs about issues ranging from performance to reliability to availability to ease of change (and more!) is part-and-parcel of a software engineer's job.
Many of the other specializations (such as systems developer, web developer, etc.) overlap significantly with what software engineers do: indeed, these others are in some sense specialized software engineers. This suggests that, along with the basics, you should take courses about the kind of software you may be interested in engineering.
The curriculum for a software engineer is heavily, but not solely, experiential. 331 and 403 are essential courses, as is one or more software capstone courses (and, when possible, internships or coops). Understanding the context for software from top-to-bottom is valuable for any software engineer, making courses like 341 and 401, 333 and 451 and 461 , 440, 344 and 444, 484, and 421 worthy of serious consideration. Students should also consider taking Business or Communication courses as possible general education courses.
- Highly Recommended Courses: CSE 331, 403, software capstone
- Other Recommended Courses: CSE 341/401, 333/451/461, 333/444, 440, 484, 421
User Interface and Human-Computer Interaction
User interface design or user interface engineering is the design of computers, appliances, machines, mobile communication devices, software applications, and websites with the focus on the user's experience and interaction. The goal of user interface design is to make the user's interaction as simple, efficient, satisfying, (and possibly) fun as possible, in terms of accomplishing user goals—what is often called user-centered design. Good user interface design facilitates finishing the task at hand without drawing unnecessary attention to itself (unless it is a game!). Graphic design may be utilized to support its usability. The design process must balance technical functionality and visual elements (e.g., mental model) to create a system that is not only operational but also usable and adaptable to changing user needs. Interface design is involved in a wide range of projects from computer systems, to phones, to cars, to commercial planes; all of these projects involve much of the same basic human interactions yet also require some unique skills and knowledge. As a result, designers tend to specialize in certain types of projects and have skills centered around their expertise, whether that be software design, user research, web design, or industrial design. (Adapted from Wikipedia.)
At UW, UI and HCI related courses are found in CSE as well as in the Information School, Human Centered Design and Engineering, and the Interaction Design program in the School of Art. There is also a cross-campus alliance of HCI faculty and students called dub -- dub is more oriented toward faculty and grad students, but the dub website is an excellent place to check out the range of HCI activities at UW.
- Highly Recommended Courses: CSE 440, 441; also any capstone courses in related areas, such as computing for the developing world or computer support for people with disabilities
- Other Recommended Courses: CSE 403, 446, 451, 454, 457, 484
Also see appropriate courses in the other UW departments noted above. Generally, the CSE courses will have a greater concentration on the technical aspects of HCI; the HCDE courses will focus on user experience and user testing; the Interaction Design program takes a design (art) perspective; while the iSchool courses on the relationships among information, technology, and people. So, CSE440 will include some basics of doing a usability study, but for a more complete treatment, see for example HCDE417, Survey of Usability Research Techniques.
Many companies need talented web developers. Some are large companies that do web software as their bread and butter, like Google, Amazon, and Yahoo. Others are traditional software houses that have particular web products and services, like Microsoft or Cisco. Still others are regular non-software businesses that need to hire web hackers to create dynamic web sites for the company.
- Highly Recommended Courses: CSE 190M, 403, 444, 454
- Other Recommended Courses: CSE 341, 344, 444, 484 & INFO 343, 344
Specializations Listed By Department and Course Number (UW course descriptions)
CSE 190: Security
CSE 190M: Web Development
CSE 331: Systems Development, Software Engineering
CSE 333: Embedded Systems, Systems Development, Software Engineering
CSE 341: Biology/Bioengineering/Medicine/Genomics, Systems Development, Software Engineering, Web Development
CSE 344: Databases, ICTD, Biology/Bioengineering/Medicine/Genomics, Web Development
CSE 369: Embedded Systems, Hardware Design/Engineering, Systems Development
CSE 401: Embedded Systems, Hardware Design/Engineering, ICTD, Systems Development, Software Engineering
CSE 403: Databases, Embedded Systems, Graphics/Vision/Games/Animation, Security, Systems Development, Software Engineering, User Interface & Human-Computer Interaction, Web Development
CSE 417: ICTD
CSE 418: ICTD
CSE 419: ICTD
CSE 421: Data Mining, Graphics/Vision/Games/Animation, Hardware Design/Engineering, Biology/Bioengineering/Medicine/Genomics, Mathematical Foundations, MS/PhD in CSE, Robotics & Control Systems, Scientific Computing, Security, Software Engineering
CSE 427: Biology/Bioengineering/Medicine/Genomics
CSE 428: Biology/Bioengineering/Medicine/Genomics
CSE 431: Mathematical Foundations
CSE 440: Databases, Embedded Systems, ICTD, Security, Software Engineering, User Interface & Human-Computer Interaction
CSE 441: User Interface & Human-Computer Interaction
CSE 444: Databases, Data Mining, Biology/Bioengineering/Medicine/Genomics, Security, Systems Development, Software Engineering
CSE 446: Databases, Data Mining, Graphics/Vision/Games/Animation, Hardware Design/Engineering, Biology/Bioengineering/Medicine/Genomics, Robotics & Control Systems, Security, User Interface & Human-Computer Interaction, Web Development
CSE 451: Databases, Embedded Systems, Hardware Design/Engineering, MS/PhD in CSE, Scientific Computing, Security, Systems Development, Software EngineeringUser Interface & Human-Computer Interaction
CSE 454: Data Mining, ICTD, User Interface & Human-Computer Interaction
CSE 455: Vision, Robotics & Control Systems
CSE 473: Vision
CSE 454: Systems Development, Web Development
CSE 456: Animation Production
CSE 457: Graphics, Games, User Interface & Human-Computer Interaction
CSE 458: Graphics, Animation Production
CSE 459: Animation Production
CSE 460: Animation Production
CSE 461: Embedded Systems, Hardware Design/Engineering, ICTD, Scientific Computing, Security, Systems Development, Software Engineering
CSE 474: Embedded Systems, Hardware Design/Engineering, ICTD, Robotics & Control Systems, Security, Systems Development
CSE 467: Embedded Systems, Hardware Design/Engineering
CSE 471: Scientific Computing, Security, Systems Development
CSE 473: Data Mining, Biology/Bioengineering/Medicine/Genomics, Robotics & Control Systems
CSE 476: Embedded Systems, ICTD
CSE 477: Embedded Systems, Hardware Design/Engineering, ICTD
CSE 481: Embedded Systems, ICTD, Systems Development
CSE 481D: Games
CSE 484: Databases, Embedded Systems, Security, Systems Development, Software Engineering, User Interface & Human-Computer Interaction, Web Development
CSE 486: Biology/Bioengineering/Medicine/Genomics
CSE 487: Biology/Bioengineering/Medicine/Genomics
CSE 488: Biology/Bioengineering/Medicine/Genomics
CSE 490D: Embedded Systems, ICTD
CSE 498A/B: MS/PhD in CSE
CSE 5XX: MS/PhD in CSE
CSE 590: MS/PhD in CSE
EE 205: Embedded Systems
EE 215: Embedded Systems, Robotics & Control Systems
EE 417: Embedded Systems
EE 440: Graphics/Vision/Games/Animation
EE 442: Embedded Systems
EE 476: Hardware Design/Engineering
EE 477: Hardware Design/Engineering
EE 484: Embedded Systems
HCDE 417: User Interface & Human-Computer Interaction
INFO 343: Web Development
INFO 344: Web Development
INFO 360: ICTD
INFO 380: ICTD
MATH 464/465/466: Scientific Computing
MATH 407/408/409: Scientific Computing
MEBI 498: Biology/Bioengineering/Medicine/Genomics
STAT 391: Data Mining, Biology/Bioengineering/Medicine/Genomics, Mathematical Foundations, Robotics & Control Systems, Scientific Computing