Core Course Requirement
One theory course from:
CS 581 | Theory of Computation | 3 |
CS 584 | Algorithm Design and Analysis | 3 |
CS 578 | Programming Language Semantics | 3 |
Total Credit Hours: 3
One programming practice course from:
Or any 500-level course designated by the department as a "Programming Intensive" course.
Total Credit Hours: 3
Track Requirement
Take three courses from one of the following tracks:
Artificial Intelligence and Machine Learning
Covers modern algorithms underlying intelligent and learning systems. Examples of topics covered in this track include knowledge representation, planning, reasoning, combinatorial and adversarial search methods, natural language processing, computer vision, statistical machine learning, and evolutionary and reinforcement learning.
CS 541 | Artificial Intelligence | 3 |
CS 545 | Machine Learning | 3 |
| One course from the approved elective list | 3 |
Databases
Covers concepts, languages, implementation and application of database management systems. Other topics that have been offered in the track include formal foundations of databases, databases for cloud and cluster environments, and data stream systems.
CS 586 | Introduction to Database Management Systems | 3 |
| Two courses from the approved elective list | 6 |
Languages and Programming
Focuses on the design, implementation, and use of programming languages. It includes exposure to a variety of programming paradigms, experience using programming languages to express the essential abstractions of a problem domain, courses on programming language implementation, and the study of formal methods for specifying and reasoning about programs and programming languages.
CS 558 | Programming Languages | 3 |
| Two courses from the approved elective list | 6 |
Security
Focuses on protecting computing systems and user data from unauthorized access and use. Topics include cryptography, network and host-based access control, vulnerability analysis, penetration testing, and reverse engineering.
CS 591 | Introduction to Computer Security | 3 |
| Two courses from the approved elective list | 6 |
Software Engineering
Studies the principles, processes, techniques, and tools for building software systems. Topics include software requirement, design, development, validation, and maintenance.
CS 554 | Software Engineering | 3 |
| Two courses from the approved elective list | 6 |
Systems and Networking
Studies the design and implementation of operating systems, wired and wireless computer networks including high performance computer systems, data centers, cloud computing architectures, distributed systems, fault tolerance, concurrency, systems programming, and theoretical topics related to these areas.
CS 533 | Concepts of Operating Systems | 3 |
CS 594 | Internetworking Protocols | 3 |
| One course from the approved elective list | 3 |
Theory
Focuses on the theoretical foundations of computer science. Examples of topics include algorithmic design and analysis, computational complexity, learning theory, cryptography, and quantum computing.
CS 581 | Theory of Computation | 3 |
CS 584 | Algorithm Design and Analysis | 3 |
| One course from the approved elective list | 3 |
Visual Computing
Covers foundational tools and techniques, and cutting-edge algorithms that enable computers to see, reason and interact with the world around us. Topics include computer vision, computational photography, image and video processing, 3D imaging, computer graphics and rendering, and virtual and augmented reality.
CS 527 | Introduction to Visual Computing | 3 |
| Two courses from the approved elective list | 6 |
Total Credit Hours: 9
Electives
Students must take enough electives to complete 45 total credits for the Master's degree. Electives can be any 500-level CS course and may include up to 6 credits of CS 505 (Reading and Conference) and CS 506 (Special Projects), and up to 3 credits of CS 504 (Internship). CS 501 Research, CS 502 Independent Study, and CS 509 Practicum credits cannot be applied. A limited number of credits taken outside Computer Science can count towards the elective requirements, with advisor approval. A minimum of 30 credits must be taken in Computer Science at Portland State University. Given this, students may use a combined total of 15 pre-admission, transfer, and non-CS credits toward their Master’s degree with advisor approval. One additional credit beyond the 15 credit limit can be used provided none of the courses is a 1-credit course.
- Pre-admission credits (taken while not formally admitted to a PSU graduate program) can include both transfer and PSU credits. Pre-admission credits taken at PSU are requested via a DARS exception submitted to the Graduate School. This request should be made soon after admission to the graduate program.
- Transfer credits refer to credits taken from another institution other than PSU. To request approval of transfer credits, complete and submit the GO-21M form (Proposed Transfer Credit) to the CS Graduate Advisor. Students should submit the GO-21 form during the first term of enrollment in the program, so there is sufficient time to complete any additional coursework that may be necessary. Any transfer credits must be approved before graduation paperwork can be processed. OHSU joint campus credits are considered transfer credits and are transferred via a different process. For more information, visit: www.pdx.edu/gradschool/joint-campus-registration.
- Non-CS credits taken outside of Computer Science, such as ECE or Math, can count towards elective requirements once approved. Students should obtain advisor approval in advance to avoid the risk of taking a course that will not be approved. To request approval, submit a plan of study with the courses listed to the Graduate Advisor. Non-CS courses must be graduate level. All ETM courses are eligible to transfer but students are limited to using only one for the CS degree requirements.
Total Credit Hours: 30