PROGRAM STRUCTURE REQUIREMENTS FINANCIAL AID FAQ APPLY ONLINE MSCS DEGREE

 

Course Descriptions
M.S. in Computer Science
 

CS 390 Foundations of Modern Programming:  Modern Programming Methods and Systems -- Capture the Fundamental Principles of Knowledge for Greater Success in all Areas

This course presents the fundamental principles of object-oriented programming. Students will learn how to write reusable and better-maintained software, and integrate this knowledge with laboratory assignments and projects. Topics include: Fundamental principles and models of object-oriented programming, UML class diagrams and design principles that promote reusability and maintainability of software. Also studied are stacks, queues, linked lists, and trees, using the Java programming language. This course cannot be taken for graduate credit, but may be a required prerequisiste for CS 401 for incoming students who do not pass the qualifying exam administered to incoming students.

CS 401 Modern Programming Practices: Current Concepts and Best Practices in Software Development -- Knowledge is the Basis of Action 

This course presents the fundamental principles of object-oriented programming. Students will learn how to write reusable and better-maintained software, and integrate this knowledge with laboratory assignments and projects. Topics include: fundamental principles and models of object-oriented programming, UML class diagrams and design principles that promote reusability and maintainability of software. (2 units)

CS 422 Database Management Systems
Database management systems organize and retrieve information, allowing the user to access the desired information easily and efficiently. Topics in this course include relational, hierarchical, and network data models; query languages; relational calculus, data normalization, and schemes; file organization techniques; data security and integrity; and study of a specific commercial database management system. (4 units) 

CS 425 Software Engineering 
This course introduces the major principles used in the development of software. General principles and methods are identified, and their application is located in various phases and models of software engineering. The focus is on understanding the organizing power inherent in the underlying concepts, principles, and processes, rather than any particular developmental method or model. Topics include: the nature and qualities of software; types and qualities of specifications; objectives of design; verification approaches; production process models; and classification of supporting tools and environments. (4 units) 

CS 435 Algorithms 
This course presents methods for analyzing the efficiency of algorithms as well as a variety of known efficient algorithms. Topics include graph algorithms, combinatorial algorithms, searching and sorting, numerical and arithmetic algorithms, recurrence relations, computing time and space complexity of algorithms, and NP-complete problems. (4 units)

CS 440 Compiler Construction 
Students learn the successive stages and detailed mechanics by which high-level programming languages are translated into machine language by a compiler. Topics include language and grammar specification, compiler structure, compiler generation tools, lexical analysis, parsing, syntax analysis, semantic analysis, intermediate language, code generation and optimization, storage management and linkages, user interface, and a large programming project implementing part of a compiler. (4 units) 

CS 450 Computer Communication Networks 
Computers are connected with high-speed communication lines in local area or wide area networks, for the purpose of sharing databases and distributing workloads to increase efficiency and improve service. Topics include sampling and information theory, error detecting and correction codes, network architecture, communication protocols and models, protocol analysis, hardware components, logical and physical topology, message routing and switching, flow control, local area networks, and data security. (4 units) 

CS 465 Operating Systems
An operating system controls the central resources of the computer system and allocates them to individual users. Course topics include sequential and concurrent processes, mutual exclusion, resource sharing, process cooperation, deadlock, resource allocation, processor scheduling, memory management, segmentation and paging algorithms, timesharing systems, scheduling algorithms, and resource protection. (4 units) 

CS 466 Computer Security
This course goes deeply into the three aspects of computer security: confidentiality, integrity and confidentiality. Several models for confidential and integrity security policies are studied. The role of cryptography in assuring confidentiality and integrity is examined. Other topics include authentication, auditting, penetration testing, common vulnerabilities and intrusion detection. The course concludes with the case study of a realistic secure system. Students will be asked to read papers from the security literature and apply them to material given in the lectures.

CS 467 Secure Coding Practices

This course goes deeply into the three aspects of computer security: confidentiality, integrity and availablitly. Several models for confidential and integrity security policies are studied. The role of cryptography in assuring confidentiality and integrity is examined. Other topics include authentication, auditting, penetration testing, common vulnerabilities and intrusion detection. The course concludes with the case study of a realistic secure system. Students will be asked to read papers from the security literature and apply them to material given in the lectures.


The course examines the 19 issues that account for 95% of the security vulnerabilities that occur in the field. The issues are:
1. Buffer Overflows
2. Format String problems
3. Integer range errors
4. SQL injection
5. Command injection
6. Failure to handle errors
7. Cross-site scripting
8. Failing to protect network traffic
9. Use of "magic" URLs and hidden fields
10. Improper use of SSL
11. Use of weak password-based systems
12. Failing to store and protect data securely
13. Information leakage
14. Improper file access
15. Trusting network address information
16. Race conditions (improper thread programming)
17. Unauthenticated key exchange
18. Failing to use cryptographically strong random numbers
19. Poor usability
The final project of the course will analyze and remove vulnerabilities from a web application.
The course will emphasize that a computer programmer needs both broad comprehension and the ability to focus to produce secure software.

CS 470 Artificial Intelligence 
The field of artificial intelligence attempts to create computer programs that reflect the values of human intelligence. Course topics include state-space representations, tree and graph searches, predicate calculus and deduction, heuristics, learning and problem solving, natural language processing, expert systems, and programming languages for artificial intelligence. (4 units) 

CS 471 Parallel Programming 
To actualize the potential offered by multi-core processors for improved performance, knowledge of parallel programming techniques is required. Through a series of parallel programming projects, students will gain a new level of programming skill. Specific topics include: data parallelism, multiprocessor architecture, synchronous parallelism, parallel algorithms, OpenMP threading standard, computer clusters, Message-Passing Interface (MPI) standard, communication streams. (4 units) 

CS 472 Web Programming
This is a project-based course to develop Web 2.0 applications. We will cover the core set of technologies needed - XHTML, CSS, JavaScript, DHTML, PHP, SQL, MySQL, XML, and AJAX. We will also look into design issues. We will consider design strategies to make scalable web sites, access datasets from other web sites, and integrate the analysis of
those datasets. (4 units)

CS 475 Computer Graphics
Recent advances in Computer Graphics hardware and software have made novel applications feasible in fields such as: Computer Games, Scientific Visualization, 3D Medical Imaging, Virtual Reality, and other innovative user interfaces... In this course we will cover the basic algorithms and mathematical concepts underlying the creation of 2D and 3D graphics. Several short projects will be completed using OpenGL and Java3D. The course evaluation will also include one theoretical exam and one project in which teams of students will create an interactive 3D application. Students who take this course will have a plus when sending their resumes to companies working on this growing and exciting field. (4 units) 

CS 476 Image Processing
The subject that will be covered are- Fundamentals of digital imaging, Image enhancement in the spatial domain (e.g., contrast brightness and gray level transformations, histogram and its equalization, spatial filtering: blurring, sharpening, median), Image enhancement in frequency domain (Fourier transform, convolution theorem, filtering in frequency domain), Image restoration (from blur and noise), Color spaces, color processing, morphological image processing, image segmentation (including edge detection, Hough transform, segmentation by thresholding, by split-and-merge and by watershed), Image compression-main structure of JPEG and MPEG, some on pattern recognition. Also- learning to work with MATLAB language.

CS 501 Advanced Computer Architecture
This course presents the methods, principles, and metrics of computer systems architecture. The interactions of hardware components, system architecture, and software algorithms are the basis for evaluating the performance and characteristics of a range of advanced computing systems. Topics include pipelined and multiprocessing architecture, parallel processing, distributed processing, case studies, and comparisons of existing systems. (4 units) 

CS 505 Advanced Programming Languages 
This course considers advanced topics in programming language design with emphasis on formal methods and abstraction mechanisms. Topics include data and control abstraction, formal specification of syntax and semantics, proofs of program correctness, non deterministic programming, advanced control structures, and study of specific languages. (4 units) 

CS 525 Advanced Software Development: The Structures and Patterns of Software that Embody Knowledge of Good Design
This course considers the current methods and practices for good design of software systems. Topics include: software design patterns, frameworks, architectures, and designing systems to apply these multi-level abstractions. (4 units)

CS 545 Distributed Computing
This course studies the issues, methods, and techniques for creating multi-computing distributed systems across networked or more tightly coupled interconnect systems. Topics include communication, protocol, and synchronization, performance, and the architecture of server, client/server, multi-tier, and mobile agent distributed object systems. Software issues of portability, extendibility, and interpretability are also studied. (4 units)

CS 547 Distributed Architecture
This course will focus on enterprise architecture principles, patterns and design considerations. We will investigate how to implement an object model in a distributed application environment using distributed technologies such Enterprise JavaBeans (EJB) and see how such technologies allow us to build robust and scalable enterprise applications that include object persistence, remote accessibility, security, transactions etc. (4 units)

CS 575 Practicum in Software Development
In this practicum course, students perform computer-related tasks in a technical
professional position. The tasks performed may be in the design and development of new systems or the application of existing systems for specifipurposes. Practicum job descriptions are formulated by the employer and the student, and require approval in advance by one of the graduate faculty of the department, in consultation with the practicum supervisor where the student is placed. (This course is primarily for students in the internship or cooperative programs.) (0.5-1 unit per block - may be repeated.)

SCI-33 Science of Creative Intelligence
The 33-lesson Science of Creative Intelligence (SCI) course presents the interdisciplinary basis of the entire graduate Computer Science program. The course is based on a series of videotaped lectures by Maharishi Mahesh Yogi on the nature, range, qualities, and principles of creative intelligence (as expressed in human consciousness and the laws of nature studied by the sciences). Maharishi also presents the expressions of creative intelligence in individual life and its application in every area of society to realize the highest potential. Because Computer Science like all other disciplines is based in the intellectual understanding and experience of the structures of Natural Law, the general principles brought out in this course provide a unifying theme for all of the more specific principles studied in all other courses in the curriculum.

          In addition, during this course students learn the Transcendental Meditation Technique, which enlivens these same underlying qualities of intelligence in them, providing increased creativity, alertness, and intelligence as a basis for increased success in every area of study, their profession, and their life.

Forest Academy
Forest Academy is a 2-week course which is an opportunity for the students to deepen their understanding of their own personal growth. Topics include skill in action, higher states of consciousness, cultural values, mind and body, creativity, collective consciousness, and world peace.

Note: The academic content of the M.S. in Computer Science program is subject to change.

 

© 2008, Maharishi University of Management. All rights reserved. ® Transcendental Meditation, TM, Maharishi Transcendental Meditation, and Maharishi University of Management are registered or common law trademarks licensed to Maharishi Vedic Education Development Corporation and used under sublicense.