Program Structure
Upcoming Events
May 25, 2012 – 7:45pm -
9:15pm
Graduating Students Award Ceremony.
May 26, 2012 – 1:00pm -
4:00pm
Commencement & Reception.
May 27, 2012 –
Computer Science Department Annual Picnic.
May 28, 2012 – - Jun 8, 2012
Career Strategies Workshop (FPP Group).
Jun 8, 2012 –
Registration for June entry MSCS students.
Course Descriptions
Students working on laboratory assignment.
CS 390 Fundamental Programming Practices: Modern Programming Methods and Systems –– Capture the Fundamental Principles of Knowledge for Greater Success in All Areas
This course provides a focused program for enhancing programming and analytical skills in five areas: problem-solving, data structures, object-oriented programming, the Java programming language, and the use of recursion in Java programs. These topics are of particular importance as a prerequisite for the courses in the graduate program in Computer Science. Topics include elements of Java programming, object-oriented design and implementation, data structures (including lists, stacks, queues, binary search trees, hashtables, and sets), the Exception hierarchy, file i/o and streams, and JDBC. (4 credits) Prerequisite: CS 220
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 Systems: Capturing the Organizing Power of Information
Database systems organize and retrieve information, allowing the user to access the desired information easily and efficiently. Topics include: relational data model; SQL; ER modeling; relational algebra; data normalization; transactions; objects in the database; data security and integrity; data warehousing, OLAP, and data mining; distributed databases; and study of a specific commercial database system. (4 units) Prerequisite: CS 401 or consent of the department faculty.
CS 425 Software Engineering: Knowledge Is the Basis of Action — Principles and Processes for Developing Large-Scale Software Systems
This course introduces the student to best practices in software development through a software development methodology. Students will learn how to bring together their skills in object-oriented analysis and design, in the use of UML diagrams for modeling software solutions, to produce robust, easily maintainable software. A software development methodology describes when and how object-oriented concepts and UML diagrams should be used to accomplish the aim of building quality software. The course centers around a small project in which the principles discussed in the lecture format can be illustrated and applied. By the end of the course, the student will have a running application, built in accord with the high standards of a contemporary development methodology. (4 units) Prerequisite: CS 401 or consent of the department faculty.
CS 435 Algorithms: Discovering the Hidden Dynamics of Natural Law
This course presents methods for analyzing the efficiency of algorithms (including worst-case and average-case analysis) and introduces a variety of known, highly efficient algorithms. Analysis, design, and implementation of algorithms are given equal emphasis. Topics include searching and sorting, efficiency of operations on data structures (including lists, hashtables, balanced binary search trees, priority queues), graph algorithms, combinatorial algorithms, recurrence relations, NP-complete problems, and special topics as time allows. (In the past, special topics have included computational geometry, algorithms for cryptosystems, and approximation algorithms). (4 units) Prerequisites: CS 401 and MATH 272, or consent of the department faculty.
CS 440 Compiler Construction: Connecting Name and Form — The Source of All Programming Languages in Grammar and Semantics
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) Prerequisite: CS 401 or consent of the department faculty.
CS 450 Computer Networks: Connecting the Parts and Whole—Frictionless Flow of Information Distance Education version
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 credits) Prerequisite: CS 401 or consent of the department faculty.
CS 450 Computer Networks: Connecting the Parts and Whole—Frictionless Flow of Information On-campus version
The goal of this course is to learn the concepts, architecture principles, and terminology of computer networks by exploring how networks work and developing network applications. This course follows the top-down approach to understanding networks by using the Internet's architecture and protocols as the primary example of an implementation of network principles. We start at the application layer and continue through the transport layer, network layer, link layer, and the physical layer of computer networks. Students develop several network applications and complete several labs designed to trace and understand the predominant network protocols in use in the Internet. (4 units) Prerequisite: CS 401 or consent of the department faculty.
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)Prerequisite: CS 401 or consent of the department faculty.
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, auditing, 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. (4 credits) Prerequisite: CS 401 or consent of the department faculty.
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:
- Buffer Overflows
- Format String problems
- Integer range errors
- SQL injection
- Command injection
- Failure to handle errors
- Cross-site scripting
- Failing to protect network traffic
- Use of "magic" URLs and hidden fields
- Improper use of SSL
- Use of weak password-based systems
- Failing to store and protect data securely
- Information leakage
- Improper file access
- Trusting network address information
- Race conditions (improper thread programming)
- Unauthenticated key exchange
- Failing to use cryptographically strong random numbers
- 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
The standard processor for all new computers is now a multi-core processor, which has the potential to execute programs much more quickly. However, to utilize this potential, a programmer must have some knowledge of parallel programming techniques. During this course, students will spend most of their time writing and debugging parallel programs. The expected outcome will be to develop a new level of practical programming skill. This skill will not only be useful for programming of multi-core processors, but also operating systems programming and distributed database programming. The software tools used during this course include Microsoft Visual C/C++, Java multithreading library, and OpenMP threading standard. (4 credits) Prerequisite: Knowledge of computer programming using Java, C, or C++.
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: The Integrated Source of All Programming Languages as a Basis for Understanding and Applying Principles of Programming
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) Prerequisite: CS 401 or consent of the department faculty.
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. (2-4 credits) Prerequisite: CS 401 or consent of the department faculty.
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—software design patterns 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 specific purposes. 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 and Technology of Consciousness
The 33-lesson Science and Technology of Consciousness (STC) 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.
