UNIVERSITY OF SCIENCE - PORTLAND STATE UNIVERSITY  
ADVANCED PROGRAM IN COMPUTER SCIENCE  
 
   
Course Brief
 
1 Curriculum

1.1 Curriculum Overview

 
Courses Credits
Core Courses
(144 credits)
1  Math and Science courses 28
2  General Education courses 44
3  Computer Science/Engineering Courses 66
4  Senior Capstone Courses 6
Elective Courses
(36 credits)
5  Elective Math and Science courses 16
6  Elective Computer Science/Engineering Courses 20
Total 180
 
1.2 List of Courses

1.2.1 Core Courses

 
Courses No. HCMUNS Course Name PSU Origin Course Name Credits
Maths
& Science
Courses
(28 credits)
1 Mth251 - Calculus I Mth251 - Calculus I 4
2 Mth252 - Calculus II Mth252 - Calculus II 4
3 Mth253 - Calculus III Mth253 - Calculus III 4
4 Ph221 - General Physics I Ph221 - General Physics I 3
5 Ph222 - General Physics II Ph222 - General Physics II 3
6 Ph223 - General Physics III Ph223 - General Physics III 3
7 Ph214 - Physics Laboratory I Ph214 - Physics Laboratory 1
8 Ph215 - Physics Laboratory II Ph215 - Physics Laboratory 1
9 Ph216 - Physics Laboratory III Ph216 - Physics Laboratory 1
10 Stat451 - Applied Statistics for Engineers and Scientists Stat451 - Applied Statistics for Engineers and Scientists 4
General
Education
courses
(44 credits)
1 WR227 - Technical Writing WR227 - Technical Writing 4
2 CM101 - Communication Management Sp100 - Introduction to Speech Communication
Sp220 - Public Speaking
4
3 TR005 – Marxist – Leninist Philosophy   4
4 KT005 - Marxist – Leninist Political Economics   4
5 LS020 - Vietnam Communist Party History   4
6 TR020 - Scientific Socialism   4
7 TR040 - Hochiminh’s Ideology   4
8 SC201 - Scientific Research Methodologies   4
9 Upper Division Cluster Course #1 Upper Division Cluster Course #1 4
10 Upper Division Cluster Course #2
(do PSU phụ trách)
Upper Division Cluster Course #2 4
11 Upper Division Cluster Course #3
(do PSU phụ trách)
Upper Division Cluster Course #3 4
12 TC001 – Physical Education I   -
13 TC002 – Physical Education II   -
14 QS001 – National Defense Education I   -
15 QS002 – National Defense Education II   -
Computer
Science/
Engineering
Courses
(66 credits)
1 CS161 – Introduction to Computer Science I CS161 - Introduction to Computer Science I 4
2 CS162 – Introduction to Computer Science II CS162 - Introduction to Computer Science II 4
3 CS163 - Data Structures CS163 - Data Structures 4
4 CS200 - Computer Systems Programming I CS200 - Computer Systems Programming I 4
5 CS201 - Computer Systems Programming II CS201 - Computer Systems Programming II 4
6 CS202 - Programming Systems CS202 - Programming Systems 4
7 CS250 - Discrete Structures CS250 - Discrete Structures 4
8 CS251 - Logical Structures CS251 - Logical Structures 4
9 CS300 - Elements of Software Engineering CS300 - Elements of Software Engineering 4
10 CS305 - Social, Ethical, and Legal Issues CS305 - Social, Ethical, and Legal Issues 2
11 CS311 - Computational Structures CS311 - Computational Structures 4
12 CS321 - Languages and Compiler Design I CS321 - Languages and Compiler Design I 4
13 CS322 - Languages and Compiler Design II CS322 - Languages and Compiler Design II 4
14 CS333 - Introduction to Operating Systems CS333 - Introduction to Operating Systems 4
15 CS350 - Algorithms and Complexity CS350 - Algorithms and Complexity 4
16 CS386 - Introduction to Database Systems CS386 - Introduction to Database Systems 4
17 ECE341 - Computer Hardware ECE341 - Computer Hardware 4
Senior
Capstone
(6 credits)
1 CS487 - Software Engineering Capstone I CS487 - Software Engineering Capstone I 3
2 CS487 - Software Engineering Capstone II CS488 - Software Engineering Capstone II 3
 
The following chart illustrates the relationships between core courses.

 
 
1.2.2 Elective Courses
       Note: The following table is the list of elective courses approved by Portland State University.
 
Courses No. HCMUNS Course Name PSU Origin Course Name Credits
Elective
Math &
Science
courses
(8 Math
credits
8 Science
credits)
1 Mth261 - Introduction to Linear Algebra Mth261 - Introduction to Linear Algebra 4
2 Mth344 - Group Theory Mth344 - Group Theory 4
3 Mth346 - Number Theory Mth346 - Number Theory 4
4 Bi251 - Principles of Biology I Bi251 - Principles of Biology I 5
5 Bi252 - Principles of Biology II Bi252 - Principles of Biology II 5
6 Bi253 - Principles of Biology III Bi253 - Principles of Biology III 5
7 Ge201 - Geology I Ge201 - Geology I 3
8 Ge202 - Geology II Ge202 - Geology II 3
9 Ge203 - Geology III Ge203 - Geology III 3
10 Che221 - General Chemistry Che221 - General Chemistry I 4
11 Che222 - General Chemistry II Che222 - General Chemistry II 4
12 Che223 - General Chemistry III Che223 - General Chemistry III 4
Elective
Computer
Science/
Engineering
Courses
(20 credits)
1 CS415 - Parallel Programming CS415 - Parallel Programming 4
2 CS420 - Object-Oriented Programming CS420 - Object-Oriented Programming 4
3 CS438 - Computer Architecture CS438 - Computer Architecture 4
4 CS441 - Artificial Intelligence CS441 - Artificial Intelligence 4
5 CS447 - Computer Graphics CS447 - Computer Graphics 4
6 CS451 - Numerical Computation CS451 - Numerical Computation 4
7 CS452 - Building Software Systems with Components< CS452 - Building Software Systems with Components 4
8 CS454 - Software Engineering CS454 - Software Engineering 4
9 CS457 - Functional Languages CS457 - Functional Languages 4
10 CS465 - Server-side Applications: Construction and Analysis CS465 - Server-side Applications: Construction and Analysis 4
11 CS467 - The Wireless Web CS467 - The Wireless Web 4
12 CS485 - Cryptography CS485 – Cryptography 4
13 CS491 - Introduction to Computer Security CS491 - Introduction to Computer Security 4
14 CS494 - Internetworking Protocols CS494 - Internetworking Protocols 4
15 CS433 - Concepts of Operating Systems CS433 - Concepts of Operating Systems 4
16 CS449 - Computational Geometry CS449 - Computational Geometry 4
17 CS450 - Parallel Algorithms CS450 - Parallel Algorithms 4
18 CS453 - Design Patterns CS453 – Design Patterns 4
19 CS455 - Software Specification and Verification CS455 - Software Specification and Verification 4
20 CS456 - Software Implementation and Testing CS456 - Software Implementation and Testing 4
21 CS458 - Programming Languages CS458 - Programming Languages 4
22 CS459 - Software Measurement and Models CS459 - Software Measurement and Models 4
23 CS472 - Operating System Internals CS472 - Operating System Internals 4
24 CS473 - Computer Communications CS473 - Computer Communications 4
25 CS475 - Computer Systems Analysis CS475 - Computer Systems Analysis 4
26 CS476 - Computer Security CS476 - Computer Security 4
27 CS477 - Modern Language Processors CS477 - Modern Language Processors 4
28 CS479 - Formal Verification of Hardware/Software Systems CS479 - Formal Verification of Hardware/Software Systems 4
29 CS481 - Theory of Computation CS481 - Theory of Computation 4
30 CS483 - Automata and Formal Languages CS483 - Automata and Formal Languages 4
31 CS484 - Algorithm Design and Analysis CS484 - Algorithm Design and Analysis 4
32 CS486 – Introduction to Database Management CS486 - Introduction to Database Management 4
33 CS487 - Relational Database Management Systems CS487 - Relational Database Management Systems 4
34 CS488 - Distributed Database Systems CS488 - Distributed Database Systems 4
35 CS495 - Network Routing CS495 - Network Routing 4
36 CS496 - Network Management and Security CS496 - Network Management and Security 4
 
 

2 Course Description

2.1 Courses in Vietnamese


(Substituted for PSU General Courses, total credits of the whole curriculum as well as the groups of courses are unchanged)
 
TR 005 – Marxist-Leninist Philosophy (4 credits)
Content based on Decision No. 45/2002/QĐ-BGD&ĐT, date Oct. 29, 2002 of the Minister of Education and Training
 
KT005 - Marxist-Leninist Political Economics (4 credits)
Content based on Decision No. 45/2002/QĐ-BGD&ĐT, date Oct. 29, 2002 of the Minister of Education and Training
 
LS020 - Vietnam Communist Party History (4 credits)
Content based on Decision No. 41/2003/QĐ-BGD&ĐT, date Aug. 27, 2003 of the Minister of Education and Training
 
TR020 - Scientific Socialism (4 credits)
Content based on Decision No. 34/2003/QĐ-BGD&ĐT, date Jul. 31, 2003 of the Minister of Education and Training
 
TR040 - Hochiminh’s Idealogy (4 credits)
Content based on Decision No. 35/2003/QĐ-BGD&ĐT, date Jul. 31, 2003 of the Minister of Education and Training
 
TC001 and TC002: Physical Education 1, 2 (0 credits)
Content based on Decision No. 3244/GD-ĐT, date Sep. 12, 1995 and Decision No. 1262/GD-ĐT date Apr. 12, 1997 of the Minister of Education and Training
 
QS001 and QS002: National Defence Education (0 credits)
Content based on Decision No. 12/2000/QĐ-BGD&ĐT, date May. 9, 2000 of the Minister of Education and Training
 
2.2 Courses in English
 
Mth251 - Calculus I (4 credits)
To equip the students with the concept and techniques of limits, differentiation and integration, and their applications.

Prerequisite(s): N/A
 
Mth252 - Calculus II (4 credits)
To equip the students with the concept and techniques of limits, differentiation and integration, and their applications.

Prerequisite(s): Mth251
 
Mth253 - Calculus III (4 credits)
To equip the students with the concept and techniques of improper integrals; the theory of infinite series, in particular power series; polar coordinates; vector valued functions and functions of several variables, partial differentiation; as well as the theory of multiple integrals.

Prerequisite(s): Mth252
 
Ph 221, 222, 222 – General Physics I, II, III (3, 3, 3 credits)
Introductory physics for students majoring in engineering. The student will explore topics in physics including statics, dynamics, electromagnetism, thermodynamics, and optics using the methods of calculus.

Prerequisite(s): Ph221 (for Ph222), Ph222 (for Ph223)
 
CS161 - Introduction to Computer Science I (4 credits)
Introduction to fundamental concepts of computer science. Problem solving, algorithm and program design, data types, control structures, and subprograms. This course is primarily designed for CS majors.

Prerequisite(s): N/A
 
CS162 - Introduction to Computer Science II (4 credits)
Introduction to software design, use of a variety of data structures, data abstraction, and recursion. Application of recursion in software design. Program correctness, verification, and testing. Students will write a substantial computer program during the term.

Prerequisite(s): CS161.
 
CS163 - Data Structures (4 credits)
Data abstraction with formal specification. Elementary algorithm analysis. Basic concepts of data and its representation inside a computer. Linear, linked, and orthogonal lists; tree structures. Data structures are implemented as data abstractions. Sorting and search strategies. Data management.

Prerequisite(s): CS161.
 
CS200 - Computer Systems Programming I (4 credits)
Introduction to computer systems from a software perspective. Systems programming using C and assembly language. Basic computer organization. Representation of data. Machine instruction sets and assembly programming, relationship between C code and assembly code, C pointers and structures and their machine-level representation. Linking and loading. Program debugging.

Prerequisite(s): CS162.
 
CS201 - Computer Systems Programming II (4 credits)
Further introduction to computer systems from a software perspective. Basic operating systems concepts and calls. Defining, measuring and improving program performance. The memory hierarchy: storage technologies, caches, virtual memory, memory allocation techniques.

Prerequisite(s): CS162, CS200.
 
CS202 - Programming Systems (4 credits)
Students will become familiar with the language and operating system environment used in most upper division courses in the Computer Science major curriculum. Use of the file system, operating-system calls, and shell-level programming; low-level debugging of high-level programs. Programming exercises will include applications from data structures (e.g. B-trees) and memory management techniques.

Prerequisite(s): CS162, CS201.
 
CS250 - Discrete Structures (4 credits)
Introduces discrete structures and techniques for computing. Sets. Graphs and trees. Functions: properties, recursive definitions, solving recurrences. Relations: properties, equivalence, partial order. Proof techniques, inductive proof. Counting techniques and discrete probability. The Maple language is introduced and used for programming experiments.

Prerequisite(s): CS163, Mth 252.
 
CS251 - Logical Structures (4 credits)
Continuation of CS 250. Logic: propositional calculus, first-order predicate calculus. Formal reasoning: natural deduction, resolution. Applications to program correctness and automatic reasoning. Introduction to algebraic structures in computing. The Prolog language is introduced and used for programming experiments.

Prerequisite(s): CS250.
 
CS300 - Elements of Software Engineering (4 credits)
Practical techniques of program development for medium-scale software produced by individuals. Software development from problem specification through design, implementation, testing, and maintenance. The fundamental design techniques of step-wise refinement and data abstraction. A software project will be carried through the development cycle.

Prerequisite(s): CS202.
 
CS305 - Social, Ethical, and Legal Issues (2 credits)
History of computing, social context of computing, professional and ethical responsibilities, risks and liabilities of safety-critical systems, intellectual property, privacy and civil liberties, social implications of the Internet, computer crime, economic issues in computing.

Prerequisite(s): course in computer science at the 300 or higher level. Sophomore inquiry or a course in public speaking and a course in writing a research paper.
 
CS311 - Computational Structures (4 credits)
Introduces the foundations of computing. Regular languages and finite automata. Context-free languages and pushdown automata. Turing machines and equivalent models of computation. Computability. Introduction to complexity. The Prolog language is used for programming experiments.

Prerequisite(s): CS 251.
 
CS321, 322 - Languages and Compiler Design I, II (4, 4 credits)
Principles of programming languages and language implementation by compilation. Techniques of language definition. Run-time behavior of programs. Compilation by recursive descent. Use of LR compiler- generation tools. Design and implementation of a compiler for a small language.

Prerequisite(s): CS 201, 202, 300, 311.
 
CS333 - Introduction to Operating Systems (4 credits)
Introduction to the principles of operating systems and concurrent programming. Operating system services, file systems, resource management, synchronization. The concept of a process; process cooperation and interference. Introduction to networks, and protection and security. Examples drawn from one or more modern operating systems. Programming projects, including concurrent programming.

Prerequisite(s): CS 200, 201, 311.
 
CS350 - Algorithms and Complexity (4 credits)
Techniques for the design and analysis of algorithms. Case studies of existing algorithms (sorting, searching, graph algorithms, dynamic programming, matrix multiplication, fast Fourier transform.)

Prerequisite(s): CS 311.
 
CS386 - Introduction to Database Systems (4 credits)
Introduction to fundamental concepts of database management with the relational model. Schema design and refinement, query languages, transaction management, security, database application environments, physical data organization, overview of query processing, physical design tuning.

Prerequisite(s): CS 163, CS250, CS251.
 
  2.3 Elective Computer Science Courses
 
CS 415 - Parallel Programming (4 credits)
An introduction to parallel programming concepts and techniques. Topics include: parallel programming models and languages, share memory programming, message-passing programming, performance models and analysis techniques, domain-specific parallel algorithms.

Prerequisite(s): CS 321, CS 333.
 
CS 420 - Object-Oriented Programming (4 credits)
The fundamental concepts of object-oriented programming languages, including data abstraction and typing, class inheritance and generic types, prototypes and delegation, concurrency control and distribution, object-oriented databases, and implementation. To illustrate these issues, programming assignments in languages such as Smalltalk, Eiffel and C will be given.

Prerequisite(s): CS 322.
 
CS 438 - Computer Architecture (4 credits)
Processors, memory hierarchy, and bus systems. Multi-level caches and cache coherence in MP systems. Arithmetic algorithms. RISC vs. CISC instructions, pipelining, and software pipelining. Superscalar, super-pipelined, and VLIW architectures. Connection networks. Performance evaluation, simulation, and analytic models. Performance enhancement through branch prediction and out-of-order execution.

Prerequisite(s): CS 322 or CS 333.
 
CS 441 - Artificial Intelligence (4)
Introduction to the basic concepts and techniques of artificial intelligence. Knowledge representation, problem solving, and AI search techniques. Program will be written in one of the AI languages.

Prerequisite(s): CS202, CS 311.
 
CS 447 - Computer Graphics (4 credits)
This course will provide an introduction to graphics systems and applications. Basic structure of interactive graphics systems, characteristics of various hardware devices. Control of display devices, implementation of simple packages, device independence, and standard packages. Distributed architectures for graphics, hidden line and hidden surfaces algorithms, representations of curves and surfaces.

Prerequisite(s): CS202, Mth261.
 
CS 451 - Numerical Computation (4 credits)
Introduction to numerical methods. Includes topics from elementary discussion of errors, polynomials, interpolation, quadrature, linear systems of equations, and solution of nonlinear equations.

Prerequisite(s): Mth 261, CS 200.
 
CS 452 - Building Software Systems with Components (4 credits)
Designed to familiarize students with the concepts behind and opportunities afforded by modern component architectures, such as Microsoft COM, Java Beans, and CORBA. Students are exposed to component development techniques and methods for developing complex software architectures using components. Students become familiar with component development, scripting and composing components, and the strengths and weaknesses of using components in designing large complex software systems.

Prerequisite(s): CS 300, CS 333, knowledge of C or Java programming.
 
CS 454 - Software Engineering (4 credits)
Current methodologies for the development of large, industrial strength software systems. Topics include requirements, specification, design, implementation, testing, project management and cost estimation, formal methods, and software process improvement.

Prerequisite(s): CS 321.
 
CS 457 - Functional Languages (4 credits)
Introduction to functional notation, recursion, higher-order functions, reasoning about functions, and models for the evaluation of applicative expressions. Use of functional languages.

Prerequisite(s): CS 202, CS 311.
 
CS 465 - Server-side Applications: Construction and Analysis (4 credits)
Covers the basics of programming in Perl and its use as a vehicle for writing CGI-Bin scripts for the World Wide Web. Explores the use of JavaScript as a client-side adjunct. Topics include basic Perl programming; the Client-server Model used by the World Wide Web; CGI-Bin scripts; security and accessibility concerns; HTTP protocols; human-interface issues on the World Wide Web; and elementary JavaScript programming.

Prerequisite(s): CS 300, CS 333, CS 433.
 
CS 467 - The Wireless Web (4 credits)
Covers the basics of the Wireless Application Protocol (WAP) as used in modern mobile phones and other handheld devices. Provides an overview of the WAP architecture, as well as an in-depth exploration of the WAP Application Layer (WAE), including WML, WML Script, and the WAP push framework.

Prerequisite(s): CS 465.
 
CS 485 - Cryptography (4 credits)
The goal of cryptography is the encoding of information via a cryptographic system. Cryptanalysis studies the breaking of cryptosystems. This course focuses on cryptography but with respect to cryptanalysis. An overview of classical systems with an in-depth examination of modern cryptosystems. This includes block algorithms such as DES; public-key cryptosystems, such as RSA; and one-way functions. Additional topics include cryptographic protocols, signature schemes, pseudo-random number generation, Shannon’s information theory, and stream ciphers.

Prerequisite(s): CS 350.
 
CS 491 - Introduction to Computer Security (4 credits)
Provides a broad overview of computer security. Provides a solid theoretical foundation, as well as real-world examples, for understanding computer security. Fundamental theoretical results, foundational models, and salient examples will be covered. Security in computer operating systems, networks, and data will be covered, with emphasis on operating system and program security.

Prerequisite(s): CS 333, CS 350, C and Java programming.
 
CS 494 - Internetworking Protocols (4 credits)
Advanced study of the protocols and algorithms used in the Internet (IETF) family of networking protocols. For example, ARP, IP, UDP, TCP, multicasting, routing protocols like RIP and OSPF, and application protocols like DNS, NFS, SNMP, FTP and HTTP. Issues such as addressing, name service, protocol design, and scalability will be explored.

Prerequisite(s): CS 333.
 
CS 433 - Concepts of Operating Systems (4 credits)
Survey of concepts and techniques used in modern operating systems. Sample concepts covered are concurrency, IPCs, scheduling, resource allocation, memory management, file systems, and security. Techniques for implementing operating systems taught through a programming project.

Prerequisite(s): CS 333.
 
CS 449 - Computational Geometry (4 credits)
Perspective and projective geometry. Analytic projective geometry, projective lines and projective planes. Projective transformations of lines and planes. Homogeneous coordinates. Applications to two-dimensional computer graphics. Conic sections in design.

Prerequisite(s): CS 163, CS451.
 
CS 450 - Parallel Algorithms (4 credits)
Definition and nature of parallel computation. Parallel computation from the point of view of hardware/architecture, program/scheduling, and algorithms. Why and how parallel computation is different from serial computation. Examples to highlight the differences. Parallel algorithms in general: illustration of the most important features and techniques. Illustration of the limitations. A survey of major results, general form of results, limitations on speed-up.

Prerequisite(s): CS 350
 
CS 453 - Design Patterns (4 credits)
Software design patterns are reusable solutions to recurring software problems. They capture successful experiences and convey expert insight and knowledge to less experienced developers. Course provides an in-depth view of patterns using Java as the presentation language. Course is suitable to software architects and developers who are already well-versed in this language. In addition, it offers continuous opportunities for learning the most advanced features of the Java language and understanding some principles behind the design of its fundamental libraries.

Prerequisite(s): programming in Java and CS 420.
 
CS 455 - Software Specification and Verification (4 credits)
Theoretical and practical aspects of the software development process or software lifecycle. Covers the first part of the cycle: formulating the external requirements, specifying what the software is to do, and the abstract design. Emphasis will be on the formal aspects of specification and verification.

Prerequisite(s): CS 454
 
CS 456 - Software Implementation and Testing (4 credits)
Theoretical and practical aspects of the software development process or software lifecycle. Covers the second part of the cycle: detailed design, implementation in a programming language, testing, and maintenance. Emphasis will be on the technical aspects of software testing.

Prerequisite(s): CS 454.
 
CS 458 - Programming Languages (4 credits)
In-depth study of current and historical issues in the design, implementation, and application of programming languages. Topics range from basic to advanced. Areas include syntax, semantics, scoping, typing, abstraction, exceptions, and concurrency. Computational paradigms such as functional, logic, and/or object oriented are analyzed. Several “recent” programming languages used.

Prerequisite(s): CS 322.
 
CS 459 - Software Measurement and Models (4 credits)
Survey, evaluation, and application of software measurement techniques and models. Particular emphasis on product metrics such as Software Science, Cyclomatic Complexity, and Function Points

Prerequisite(s): CS454.
 
CS 460 - Human-Computer Interaction (4 credits)
Introduction to the basic theory of human-computer interaction. Principles of human cognition and interface design, interface evaluation techniques. Several prototyping tools will be presented. A project is required.

Prerequisite(s): CS 202.
 
CS 472 - Operating System Internals (4 credits)
Internals of a specific operating system including structure of the kernel, block buffering cache, file system structure and system calls, process structure and scheduling, memory management, device driver interface, and interprocess communication.

Prerequisite(s): CS 333.
 
CS 473 - Computer Communications (4 credits)
Layers of the ISO/OSI reference model; basics of computer telecommunications, networking technology; communications protocols, their function and impact on the performance of computer communications; traffic patterns in a data network.

Prerequisite(s): CS 333
 
CS 475 - Computer Systems Analysis (4 credits)
An advanced course on computer systems. Topics include operating systems, performance evaluation, device analysis, construction and proof of monitors, file systems, objects and processes, reliability, and protection.

Prerequisite(s): CS 333
 
CS 476 - Computer Security (4 credits)
Introduction to the principles of computer security. Development of the notion of security through formal models and the examination of existing secure systems. Systems intended for the protection of classified information as well as commercial systems will be examined.

Prerequisite(s): CS 333.
 
CS 477 - Modern Language Processors (4 credits)
An advanced course on compiler construction for modern programming languages, such as object-oriented or functional languages. Topics include type-checking, executable intermediate representations, interpretation and virtual machines, code generation for modern architectures, memory management and garbage collection, and optimization.

Prerequisite(s): CS 322.
 
CS 479 - Formal Verification of Hardware/Software Systems (4 credits)
Introduction to the formal verification of functional correctness of hardware and software systems. Topics to be covered include: formal logics for system verification (first-order logic, higher-order logic, temporal logic), formal specifications, theorem proving systems, circuit verification, microprocessor verification, and system software verification.

Prerequisite(s): CS 321, 333.
 
CS 481 - Theory of Computation (4 credits)
Computability theory: study of models of computation (Turing, Church, Kleene), recursive function theory, properties of recursive, and recursively innumerable sets.

Prerequisite(s): CS 311.
 
CS 483 - Automata and Formal Languages (4 credits)
An advanced study of the theory of automata, formal languages and computational complexity. Main subjects are finite state concepts, formal grammars, computability, Turing machines, and computational complexity.

Prerequisite(s): CS 482.
 
CS 484 - Algorithm Design and Analysis (4 credits)
An advanced in-depth study in the design and analysis of algorithms. Topics include models of computation, sorting, data structures, graph algorithms, matrix multiplication, fast Fourier transform, polynomial arithmetic, pattern matching, and NP-complete problems.

Prerequisite(s): CS 350 or equivalent..
 
CS 486 - Introduction to Database Management (4 credits)
Introduction to fundamental concepts of database systems at the graduate level. Database system architecture; relational data model and languages; data modeling; normalization theory; transaction management; security; object databases; data warehouses; deductive databases.

Prerequisite(s): CS 163, 250, and 251.
 
CS 487 - Relational Database Management Systems (4 credits)
Internal design of a relational database management system. Concurrency control; lock managers; crash recovery; query and operator evaluation; query optimization; storage management; index structures; system catalogs.

Prerequisite(s): CS 486 and CS 333.
 
CS 488 - Distributed Database Systems (4 credits)
Theory and design of distributed database systems. Concurrency control and recovery, distributed deadlock detection, replication, query processing and optimization, parallel database machines, multimedia servers, and heterogeneous multidatabase systems.

Prerequisite(s): CS 487
 
CS 495 - Network Routing (4 credits)
Class will study modern packet-based routing protocols as used in the Internet including interior gateway protocols (IGPs) like RIPv1, RIPv2, OSPF, and exterior gateway protocols (EGPs) like BGP. Certain routing control theory topics will be introduced; for example, link-state and vector distance routing, policy routing, source routing and tunnels, and the general use of metrics in existing routing protocols. Other aspects of routing protocols may be presented as time permits; for example, multicast routing, mobile routing, and tag-switching protocols. This class may take the form of a seminar with students asked to present various aspects of recent experimental research in routing.

Prerequisite(s): CS 494.
 
CS 496 - Network Management and Security (4)
Covers both network management and network security. Network management will include the design of LAN-based networks, including spanning tree protocols, bridge learning protocols, virtual LANs, and Ethernet switches, and the security of switches and routers. Network management protocols will be covered in-depth including switch and router management information bases, as well as associated SNMP protocols, and network monitoring tools. The second half of the class will focus on network security. Newer secure protocols will then be covered including network-layer security and various application-layer secure protocols.

Prerequisite(s): CS 494.
 
Course Brief
 
1 Curriculum

1.1 Curriculum Overview

 
Courses Credits
Core Courses
(144 credits)
1  Math and Science courses 28
2  General Education courses 44
3  Computer Science/Engineering Courses 66
4  Senior Capstone Courses 6
Elective Courses
(36 credits)
5  Elective Math and Science courses 16
6  Elective Computer Science/Engineering Courses 20
Total 180
 
1.2 List of Courses

1.2.1 Core Courses

 
Courses No. HCMUNS Course Name PSU Origin Course Name Credits
Maths
& Science
Courses
(28 credits)
1 Mth251 - Calculus I Mth251 - Calculus I 4
2 Mth252 - Calculus II Mth252 - Calculus II 4
3 Mth253 - Calculus III Mth253 - Calculus III 4
4 Ph221 - General Physics I Ph221 - General Physics I 3
5 Ph222 - General Physics II Ph222 - General Physics II 3
6 Ph223 - General Physics III Ph223 - General Physics III 3
7 Ph214 - Physics Laboratory I Ph214 - Physics Laboratory 1
8 Ph215 - Physics Laboratory II Ph215 - Physics Laboratory 1
9 Ph216 - Physics Laboratory III Ph216 - Physics Laboratory 1
10 Stat451 - Applied Statistics for Engineers and Scientists Stat451 - Applied Statistics for Engineers and Scientists 4
General
Education
courses
(44 credits)
1 WR227 - Technical Writing WR227 - Technical Writing 4
2 CM101 - Communication Management Sp100 - Introduction to Speech Communication
Sp220 - Public Speaking
4
3 TR005 – Marxist – Leninist Philosophy   4
4 KT005 - Marxist – Leninist Political Economics   4
5 LS020 - Vietnam Communist Party History   4
6 TR020 - Scientific Socialism   4
7 TR040 - Hochiminh’s Ideology   4
8 SC201 - Scientific Research Methodologies   4
9 Upper Division Cluster Course #1 Upper Division Cluster Course #1 4
10 Upper Division Cluster Course #2
(do PSU phụ trách)
Upper Division Cluster Course #2 4
11 Upper Division Cluster Course #3
(do PSU phụ trách)
Upper Division Cluster Course #3 4
12 TC001 – Physical Education I   -
13 TC002 – Physical Education II   -
14 QS001 – National Defense Education I   -
15 QS002 – National Defense Education II   -
Computer
Science/
Engineering
Courses
(66 credits)
1 CS161 – Introduction to Computer Science I CS161 - Introduction to Computer Science I 4
2 CS162 – Introduction to Computer Science II CS162 - Introduction to Computer Science II 4
3 CS163 - Data Structures CS163 - Data Structures 4
4 CS200 - Computer Systems Programming I CS200 - Computer Systems Programming I 4
5 CS201 - Computer Systems Programming II CS201 - Computer Systems Programming II 4
6 CS202 - Programming Systems CS202 - Programming Systems 4
7 CS250 - Discrete Structures CS250 - Discrete Structures 4
8 CS251 - Logical Structures CS251 - Logical Structures 4
9 CS300 - Elements of Software Engineering CS300 - Elements of Software Engineering 4
10 CS305 - Social, Ethical, and Legal Issues CS305 - Social, Ethical, and Legal Issues 2
11 CS311 - Computational Structures CS311 - Computational Structures 4
12 CS321 - Languages and Compiler Design I CS321 - Languages and Compiler Design I 4
13 CS322 - Languages and Compiler Design II CS322 - Languages and Compiler Design II 4
14 CS333 - Introduction to Operating Systems CS333 - Introduction to Operating Systems 4
15 CS350 - Algorithms and Complexity CS350 - Algorithms and Complexity 4
16 CS386 - Introduction to Database Systems CS386 - Introduction to Database Systems 4
17 ECE341 - Computer Hardware ECE341 - Computer Hardware 4
Senior
Capstone
(6 credits)
1 CS487 - Software Engineering Capstone I CS487 - Software Engineering Capstone I 3
2 CS487 - Software Engineering Capstone II CS488 - Software Engineering Capstone II 3
 
The following chart illustrates the relationships between core courses.

 
 
1.2.2 Elective Courses
       Note: The following table is the list of elective courses approved by Portland State University.
 
Courses No. HCMUNS Course Name PSU Origin Course Name Credits
Elective
Math &
Science
courses
(8 Math
credits
8 Science
credits)
1 Mth261 - Introduction to Linear Algebra Mth261 - Introduction to Linear Algebra 4
2 Mth344 - Group Theory Mth344 - Group Theory 4
3 Mth346 - Number Theory Mth346 - Number Theory 4
4 Bi251 - Principles of Biology I Bi251 - Principles of Biology I 5
5 Bi252 - Principles of Biology II Bi252 - Principles of Biology II 5
6 Bi253 - Principles of Biology III Bi253 - Principles of Biology III 5
7 Ge201 - Geology I Ge201 - Geology I 3
8 Ge202 - Geology II Ge202 - Geology II 3
9 Ge203 - Geology III Ge203 - Geology III 3
10 Che221 - General Chemistry Che221 - General Chemistry I 4
11 Che222 - General Chemistry II Che222 - General Chemistry II 4
12 Che223 - General Chemistry III Che223 - General Chemistry III 4
Elective
Computer
Science/
Engineering
Courses
(20 credits)
1 CS415 - Parallel Programming CS415 - Parallel Programming 4
2 CS420 - Object-Oriented Programming CS420 - Object-Oriented Programming 4
3 CS438 - Computer Architecture CS438 - Computer Architecture 4
4 CS441 - Artificial Intelligence CS441 - Artificial Intelligence 4
5 CS447 - Computer Graphics CS447 - Computer Graphics 4
6 CS451 - Numerical Computation CS451 - Numerical Computation 4
7 CS452 - Building Software Systems with Components< CS452 - Building Software Systems with Components 4
8 CS454 - Software Engineering CS454 - Software Engineering 4
9 CS457 - Functional Languages CS457 - Functional Languages 4
10 CS465 - Server-side Applications: Construction and Analysis CS465 - Server-side Applications: Construction and Analysis 4
11 CS467 - The Wireless Web CS467 - The Wireless Web 4
12 CS485 - Cryptography CS485 – Cryptography 4
13 CS491 - Introduction to Computer Security CS491 - Introduction to Computer Security 4
14 CS494 - Internetworking Protocols CS494 - Internetworking Protocols 4
15 CS433 - Concepts of Operating Systems CS433 - Concepts of Operating Systems 4
16 CS449 - Computational Geometry CS449 - Computational Geometry 4
17 CS450 - Parallel Algorithms CS450 - Parallel Algorithms 4
18 CS453 - Design Patterns CS453 – Design Patterns 4
19 CS455 - Software Specification and Verification CS455 - Software Specification and Verification 4
20 CS456 - Software Implementation and Testing CS456 - Software Implementation and Testing 4
21 CS458 - Programming Languages CS458 - Programming Languages 4
22 CS459 - Software Measurement and Models CS459 - Software Measurement and Models 4
23 CS472 - Operating System Internals CS472 - Operating System Internals 4
24 CS473 - Computer Communications CS473 - Computer Communications 4
25 CS475 - Computer Systems Analysis CS475 - Computer Systems Analysis 4
26 CS476 - Computer Security CS476 - Computer Security 4
27 CS477 - Modern Language Processors CS477 - Modern Language Processors 4
28 CS479 - Formal Verification of Hardware/Software Systems CS479 - Formal Verification of Hardware/Software Systems 4
29 CS481 - Theory of Computation CS481 - Theory of Computation 4
30 CS483 - Automata and Formal Languages CS483 - Automata and Formal Languages 4
31 CS484 - Algorithm Design and Analysis CS484 - Algorithm Design and Analysis 4
32 CS486 – Introduction to Database Management CS486 - Introduction to Database Management 4
33 CS487 - Relational Database Management Systems CS487 - Relational Database Management Systems 4
34 CS488 - Distributed Database Systems CS488 - Distributed Database Systems 4
35 CS495 - Network Routing CS495 - Network Routing 4
36 CS496 - Network Management and Security CS496 - Network Management and Security 4
 
 

2 Course Description

2.1 Courses in Vietnamese


(Substituted for PSU General Courses, total credits of the whole curriculum as well as the groups of courses are unchanged)
 
TR 005 – Marxist-Leninist Philosophy (4 credits)
Content based on Decision No. 45/2002/QĐ-BGD&ĐT, date Oct. 29, 2002 of the Minister of Education and Training
 
KT005 - Marxist-Leninist Political Economics (4 credits)
Content based on Decision No. 45/2002/QĐ-BGD&ĐT, date Oct. 29, 2002 of the Minister of Education and Training
 
LS020 - Vietnam Communist Party History (4 credits)
Content based on Decision No. 41/2003/QĐ-BGD&ĐT, date Aug. 27, 2003 of the Minister of Education and Training
 
TR020 - Scientific Socialism (4 credits)
Content based on Decision No. 34/2003/QĐ-BGD&ĐT, date Jul. 31, 2003 of the Minister of Education and Training
 
TR040 - Hochiminh’s Idealogy (4 credits)
Content based on Decision No. 35/2003/QĐ-BGD&ĐT, date Jul. 31, 2003 of the Minister of Education and Training
 
TC001 and TC002: Physical Education 1, 2 (0 credits)
Content based on Decision No. 3244/GD-ĐT, date Sep. 12, 1995 and Decision No. 1262/GD-ĐT date Apr. 12, 1997 of the Minister of Education and Training
 
QS001 and QS002: National Defence Education (0 credits)
Content based on Decision No. 12/2000/QĐ-BGD&ĐT, date May. 9, 2000 of the Minister of Education and Training
 
2.2 Courses in English
 
Mth251 - Calculus I (4 credits)
To equip the students with the concept and techniques of limits, differentiation and integration, and their applications.

Prerequisite(s): N/A
 
Mth252 - Calculus II (4 credits)
To equip the students with the concept and techniques of limits, differentiation and integration, and their applications.

Prerequisite(s): Mth251
 
Mth253 - Calculus III (4 credits)
To equip the students with the concept and techniques of improper integrals; the theory of infinite series, in particular power series; polar coordinates; vector valued functions and functions of several variables, partial differentiation; as well as the theory of multiple integrals.

Prerequisite(s): Mth252
 
Ph 221, 222, 222 – General Physics I, II, III (3, 3, 3 credits)
Introductory physics for students majoring in engineering. The student will explore topics in physics including statics, dynamics, electromagnetism, thermodynamics, and optics using the methods of calculus.

Prerequisite(s): Ph221 (for Ph222), Ph222 (for Ph223)
 
CS161 - Introduction to Computer Science I (4 credits)
Introduction to fundamental concepts of computer science. Problem solving, algorithm and program design, data types, control structures, and subprograms. This course is primarily designed for CS majors.

Prerequisite(s): N/A
 
CS162 - Introduction to Computer Science II (4 credits)
Introduction to software design, use of a variety of data structures, data abstraction, and recursion. Application of recursion in software design. Program correctness, verification, and testing. Students will write a substantial computer program during the term.

Prerequisite(s): CS161.
 
CS163 - Data Structures (4 credits)
Data abstraction with formal specification. Elementary algorithm analysis. Basic concepts of data and its representation inside a computer. Linear, linked, and orthogonal lists; tree structures. Data structures are implemented as data abstractions. Sorting and search strategies. Data management.

Prerequisite(s): CS161.
 
CS200 - Computer Systems Programming I (4 credits)
Introduction to computer systems from a software perspective. Systems programming using C and assembly language. Basic computer organization. Representation of data. Machine instruction sets and assembly programming, relationship between C code and assembly code, C pointers and structures and their machine-level representation. Linking and loading. Program debugging.

Prerequisite(s): CS162.
 
CS201 - Computer Systems Programming II (4 credits)
Further introduction to computer systems from a software perspective. Basic operating systems concepts and calls. Defining, measuring and improving program performance. The memory hierarchy: storage technologies, caches, virtual memory, memory allocation techniques.

Prerequisite(s): CS162, CS200.
 
CS202 - Programming Systems (4 credits)
Students will become familiar with the language and operating system environment used in most upper division courses in the Computer Science major curriculum. Use of the file system, operating-system calls, and shell-level programming; low-level debugging of high-level programs. Programming exercises will include applications from data structures (e.g. B-trees) and memory management techniques.

Prerequisite(s): CS162, CS201.
 
CS250 - Discrete Structures (4 credits)
Introduces discrete structures and techniques for computing. Sets. Graphs and trees. Functions: properties, recursive definitions, solving recurrences. Relations: properties, equivalence, partial order. Proof techniques, inductive proof. Counting techniques and discrete probability. The Maple language is introduced and used for programming experiments.

Prerequisite(s): CS163, Mth 252.
 
CS251 - Logical Structures (4 credits)
Continuation of CS 250. Logic: propositional calculus, first-order predicate calculus. Formal reasoning: natural deduction, resolution. Applications to program correctness and automatic reasoning. Introduction to algebraic structures in computing. The Prolog language is introduced and used for programming experiments.

Prerequisite(s): CS250.
 
CS300 - Elements of Software Engineering (4 credits)
Practical techniques of program development for medium-scale software produced by individuals. Software development from problem specification through design, implementation, testing, and maintenance. The fundamental design techniques of step-wise refinement and data abstraction. A software project will be carried through the development cycle.

Prerequisite(s): CS202.
 
CS305 - Social, Ethical, and Legal Issues (2 credits)
History of computing, social context of computing, professional and ethical responsibilities, risks and liabilities of safety-critical systems, intellectual property, privacy and civil liberties, social implications of the Internet, computer crime, economic issues in computing.

Prerequisite(s): course in computer science at the 300 or higher level. Sophomore inquiry or a course in public speaking and a course in writing a research paper.
 
CS311 - Computational Structures (4 credits)
Introduces the foundations of computing. Regular languages and finite automata. Context-free languages and pushdown automata. Turing machines and equivalent models of computation. Computability. Introduction to complexity. The Prolog language is used for programming experiments.

Prerequisite(s): CS 251.
 
CS321, 322 - Languages and Compiler Design I, II (4, 4 credits)
Principles of programming languages and language implementation by compilation. Techniques of language definition. Run-time behavior of programs. Compilation by recursive descent. Use of LR compiler- generation tools. Design and implementation of a compiler for a small language.

Prerequisite(s): CS 201, 202, 300, 311.
 
CS333 - Introduction to Operating Systems (4 credits)
Introduction to the principles of operating systems and concurrent programming. Operating system services, file systems, resource management, synchronization. The concept of a process; process cooperation and interference. Introduction to networks, and protection and security. Examples drawn from one or more modern operating systems. Programming projects, including concurrent programming.

Prerequisite(s): CS 200, 201, 311.
 
CS350 - Algorithms and Complexity (4 credits)
Techniques for the design and analysis of algorithms. Case studies of existing algorithms (sorting, searching, graph algorithms, dynamic programming, matrix multiplication, fast Fourier transform.)

Prerequisite(s): CS 311.
 
CS386 - Introduction to Database Systems (4 credits)
Introduction to fundamental concepts of database management with the relational model. Schema design and refinement, query languages, transaction management, security, database application environments, physical data organization, overview of query processing, physical design tuning.

Prerequisite(s): CS 163, CS250, CS251.
 
  2.3 Elective Computer Science Courses
 
CS 415 - Parallel Programming (4 credits)
An introduction to parallel programming concepts and techniques. Topics include: parallel programming models and languages, share memory programming, message-passing programming, performance models and analysis techniques, domain-specific parallel algorithms.

Prerequisite(s): CS 321, CS 333.
 
CS 420 - Object-Oriented Programming (4 credits)
The fundamental concepts of object-oriented programming languages, including data abstraction and typing, class inheritance and generic types, prototypes and delegation, concurrency control and distribution, object-oriented databases, and implementation. To illustrate these issues, programming assignments in languages such as Smalltalk, Eiffel and C will be given.

Prerequisite(s): CS 322.
 
CS 438 - Computer Architecture (4 credits)
Processors, memory hierarchy, and bus systems. Multi-level caches and cache coherence in MP systems. Arithmetic algorithms. RISC vs. CISC instructions, pipelining, and software pipelining. Superscalar, super-pipelined, and VLIW architectures. Connection networks. Performance evaluation, simulation, and analytic models. Performance enhancement through branch prediction and out-of-order execution.

Prerequisite(s): CS 322 or CS 333.
 
CS 441 - Artificial Intelligence (4)
Introduction to the basic concepts and techniques of artificial intelligence. Knowledge representation, problem solving, and AI search techniques. Program will be written in one of the AI languages.

Prerequisite(s): CS202, CS 311.
 
CS 447 - Computer Graphics (4 credits)
This course will provide an introduction to graphics systems and applications. Basic structure of interactive graphics systems, characteristics of various hardware devices. Control of display devices, implementation of simple packages, device independence, and standard packages. Distributed architectures for graphics, hidden line and hidden surfaces algorithms, representations of curves and surfaces.

Prerequisite(s): CS202, Mth261.
 
CS 451 - Numerical Computation (4 credits)
Introduction to numerical methods. Includes topics from elementary discussion of errors, polynomials, interpolation, quadrature, linear systems of equations, and solution of nonlinear equations.

Prerequisite(s): Mth 261, CS 200.
 
CS 452 - Building Software Systems with Components (4 credits)
Designed to familiarize students with the concepts behind and opportunities afforded by modern component architectures, such as Microsoft COM, Java Beans, and CORBA. Students are exposed to component development techniques and methods for developing complex software architectures using components. Students become familiar with component development, scripting and composing components, and the strengths and weaknesses of using components in designing large complex software systems.

Prerequisite(s): CS 300, CS 333, knowledge of C or Java programming.
 
CS 454 - Software Engineering (4 credits)
Current methodologies for the development of large, industrial strength software systems. Topics include requirements, specification, design, implementation, testing, project management and cost estimation, formal methods, and software process improvement.

Prerequisite(s): CS 321.
 
CS 457 - Functional Languages (4 credits)
Introduction to functional notation, recursion, higher-order functions, reasoning about functions, and models for the evaluation of applicative expressions. Use of functional languages.

Prerequisite(s): CS 202, CS 311.
 
CS 465 - Server-side Applications: Construction and Analysis (4 credits)
Covers the basics of programming in Perl and its use as a vehicle for writing CGI-Bin scripts for the World Wide Web. Explores the use of JavaScript as a client-side adjunct. Topics include basic Perl programming; the Client-server Model used by the World Wide Web; CGI-Bin scripts; security and accessibility concerns; HTTP protocols; human-interface issues on the World Wide Web; and elementary JavaScript programming.

Prerequisite(s): CS 300, CS 333, CS 433.
 
CS 467 - The Wireless Web (4 credits)
Covers the basics of the Wireless Application Protocol (WAP) as used in modern mobile phones and other handheld devices. Provides an overview of the WAP architecture, as well as an in-depth exploration of the WAP Application Layer (WAE), including WML, WML Script, and the WAP push framework.

Prerequisite(s): CS 465.
 
CS 485 - Cryptography (4 credits)
The goal of cryptography is the encoding of information via a cryptographic system. Cryptanalysis studies the breaking of cryptosystems. This course focuses on cryptography but with respect to cryptanalysis. An overview of classical systems with an in-depth examination of modern cryptosystems. This includes block algorithms such as DES; public-key cryptosystems, such as RSA; and one-way functions. Additional topics include cryptographic protocols, signature schemes, pseudo-random number generation, Shannon’s information theory, and stream ciphers.

Prerequisite(s): CS 350.
 
CS 491 - Introduction to Computer Security (4 credits)
Provides a broad overview of computer security. Provides a solid theoretical foundation, as well as real-world examples, for understanding computer security. Fundamental theoretical results, foundational models, and salient examples will be covered. Security in computer operating systems, networks, and data will be covered, with emphasis on operating system and program security.

Prerequisite(s): CS 333, CS 350, C and Java programming.
 
CS 494 - Internetworking Protocols (4 credits)
Advanced study of the protocols and algorithms used in the Internet (IETF) family of networking protocols. For example, ARP, IP, UDP, TCP, multicasting, routing protocols like RIP and OSPF, and application protocols like DNS, NFS, SNMP, FTP and HTTP. Issues such as addressing, name service, protocol design, and scalability will be explored.

Prerequisite(s): CS 333.
 
CS 433 - Concepts of Operating Systems (4 credits)
Survey of concepts and techniques used in modern operating systems. Sample concepts covered are concurrency, IPCs, scheduling, resource allocation, memory management, file systems, and security. Techniques for implementing operating systems taught through a programming project.

Prerequisite(s): CS 333.
 
CS 449 - Computational Geometry (4 credits)
Perspective and projective geometry. Analytic projective geometry, projective lines and projective planes. Projective transformations of lines and planes. Homogeneous coordinates. Applications to two-dimensional computer graphics. Conic sections in design.

Prerequisite(s): CS 163, CS451.
 
CS 450 - Parallel Algorithms (4 credits)
Definition and nature of parallel computation. Parallel computation from the point of view of hardware/architecture, program/scheduling, and algorithms. Why and how parallel computation is different from serial computation. Examples to highlight the differences. Parallel algorithms in general: illustration of the most important features and techniques. Illustration of the limitations. A survey of major results, general form of results, limitations on speed-up.

Prerequisite(s): CS 350
 
CS 453 - Design Patterns (4 credits)
Software design patterns are reusable solutions to recurring software problems. They capture successful experiences and convey expert insight and knowledge to less experienced developers. Course provides an in-depth view of patterns using Java as the presentation language. Course is suitable to software architects and developers who are already well-versed in this language. In addition, it offers continuous opportunities for learning the most advanced features of the Java language and understanding some principles behind the design of its fundamental libraries.

Prerequisite(s): programming in Java and CS 420.
 
CS 455 - Software Specification and Verification (4 credits)
Theoretical and practical aspects of the software development process or software lifecycle. Covers the first part of the cycle: formulating the external requirements, specifying what the software is to do, and the abstract design. Emphasis will be on the formal aspects of specification and verification.

Prerequisite(s): CS 454
 
CS 456 - Software Implementation and Testing (4 credits)
Theoretical and practical aspects of the software development process or software lifecycle. Covers the second part of the cycle: detailed design, implementation in a programming language, testing, and maintenance. Emphasis will be on the technical aspects of software testing.

Prerequisite(s): CS 454.
 
CS 458 - Programming Languages (4 credits)
In-depth study of current and historical issues in the design, implementation, and application of programming languages. Topics range from basic to advanced. Areas include syntax, semantics, scoping, typing, abstraction, exceptions, and concurrency. Computational paradigms such as functional, logic, and/or object oriented are analyzed. Several “recent” programming languages used.

Prerequisite(s): CS 322.
 
CS 459 - Software Measurement and Models (4 credits)
Survey, evaluation, and application of software measurement techniques and models. Particular emphasis on product metrics such as Software Science, Cyclomatic Complexity, and Function Points

Prerequisite(s): CS454.
 
CS 460 - Human-Computer Interaction (4 credits)
Introduction to the basic theory of human-computer interaction. Principles of human cognition and interface design, interface evaluation techniques. Several prototyping tools will be presented. A project is required.

Prerequisite(s): CS 202.
 
CS 472 - Operating System Internals (4 credits)
Internals of a specific operating system including structure of the kernel, block buffering cache, file system structure and system calls, process structure and scheduling, memory management, device driver interface, and interprocess communication.

Prerequisite(s): CS 333.
 
CS 473 - Computer Communications (4 credits)
Layers of the ISO/OSI reference model; basics of computer telecommunications, networking technology; communications protocols, their function and impact on the performance of computer communications; traffic patterns in a data network.

Prerequisite(s): CS 333
 
CS 475 - Computer Systems Analysis (4 credits)
An advanced course on computer systems. Topics include operating systems, performance evaluation, device analysis, construction and proof of monitors, file systems, objects and processes, reliability, and protection.

Prerequisite(s): CS 333
 
CS 476 - Computer Security (4 credits)
Introduction to the principles of computer security. Development of the notion of security through formal models and the examination of existing secure systems. Systems intended for the protection of classified information as well as commercial systems will be examined.

Prerequisite(s): CS 333.
 
CS 477 - Modern Language Processors (4 credits)
An advanced course on compiler construction for modern programming languages, such as object-oriented or functional languages. Topics include type-checking, executable intermediate representations, interpretation and virtual machines, code generation for modern architectures, memory management and garbage collection, and optimization.

Prerequisite(s): CS 322.
 
CS 479 - Formal Verification of Hardware/Software Systems (4 credits)
Introduction to the formal verification of functional correctness of hardware and software systems. Topics to be covered include: formal logics for system verification (first-order logic, higher-order logic, temporal logic), formal specifications, theorem proving systems, circuit verification, microprocessor verification, and system software verification.

Prerequisite(s): CS 321, 333.
 
CS 481 - Theory of Computation (4 credits)
Computability theory: study of models of computation (Turing, Church, Kleene), recursive function theory, properties of recursive, and recursively innumerable sets.

Prerequisite(s): CS 311.
 
CS 483 - Automata and Formal Languages (4 credits)
An advanced study of the theory of automata, formal languages and computational complexity. Main subjects are finite state concepts, formal grammars, computability, Turing machines, and computational complexity.

Prerequisite(s): CS 482.
 
CS 484 - Algorithm Design and Analysis (4 credits)
An advanced in-depth study in the design and analysis of algorithms. Topics include models of computation, sorting, data structures, graph algorithms, matrix multiplication, fast Fourier transform, polynomial arithmetic, pattern matching, and NP-complete problems.

Prerequisite(s): CS 350 or equivalent..
 
CS 486 - Introduction to Database Management (4 credits)
Introduction to fundamental concepts of database systems at the graduate level. Database system architecture; relational data model and languages; data modeling; normalization theory; transaction management; security; object databases; data warehouses; deductive databases.

Prerequisite(s): CS 163, 250, and 251.
 
CS 487 - Relational Database Management Systems (4 credits)
Internal design of a relational database management system. Concurrency control; lock managers; crash recovery; query and operator evaluation; query optimization; storage management; index structures; system catalogs.

Prerequisite(s): CS 486 and CS 333.
 
CS 488 - Distributed Database Systems (4 credits)
Theory and design of distributed database systems. Concurrency control and recovery, distributed deadlock detection, replication, query processing and optimization, parallel database machines, multimedia servers, and heterogeneous multidatabase systems.

Prerequisite(s): CS 487
 
CS 495 - Network Routing (4 credits)
Class will study modern packet-based routing protocols as used in the Internet including interior gateway protocols (IGPs) like RIPv1, RIPv2, OSPF, and exterior gateway protocols (EGPs) like BGP. Certain routing control theory topics will be introduced; for example, link-state and vector distance routing, policy routing, source routing and tunnels, and the general use of metrics in existing routing protocols. Other aspects of routing protocols may be presented as time permits; for example, multicast routing, mobile routing, and tag-switching protocols. This class may take the form of a seminar with students asked to present various aspects of recent experimental research in routing.

Prerequisite(s): CS 494.
 
CS 496 - Network Management and Security (4)
Covers both network management and network security. Network management will include the design of LAN-based networks, including spanning tree protocols, bridge learning protocols, virtual LANs, and Ethernet switches, and the security of switches and routers. Network management protocols will be covered in-depth including switch and router management information bases, as well as associated SNMP protocols, and network monitoring tools. The second half of the class will focus on network security. Newer secure protocols will then be covered including network-layer security and various application-layer secure protocols.

Prerequisite(s): CS 494.
 
  Home      Contact us     Login        
Copyright 2007 by HCMUNS