Maharishi University of Management

Degree programs in the arts, sciences, business, and humanities

Bookmark and Share

B.S. in Computer Science

Courses

CS 201 Computer Programming 1: The Language of Computing — Expressing the Intelligence that Guides Computation

This first upper-division course in computer science presents the basic principles of computer programming, with emphasis on developing practical programming skills through laboratory assignments. Topics include formulation of algorithms, top-down design, basic control structures, data types, functions, and subroutines. (4 credits) Prerequisite: MATH 153

CS 203 Computer Programming 2: Greater Knowledge and Expression in Programming Languages

Students work in teams on a programming project to practice their knowledge of programming and developing good programming practices. Topics include structured data types, recursion, pointers, and issues of program design, structure, and correctness. (4 credits) Prerequisite: CS 201

CS 220 Data Structures: Fundamental Structures of Information at the Basis of All Computation

Students use computer programming laboratory problems to apply the principles of data structure organization in a practical environment and develop advanced programming skills. The organizing power of knowledge is found to be the source of order in computer data structures. Topics include abstract data types, internal representation of data, stacks, queues, linked lists, sparse arrays, hash coding, searching and sorting algorithms, dynamic storage allocation, and computing time of programs. (4 credits) Prerequisite: MATH 162, CS 203

CS 222 Data and File Structures: Information Structures to Represent Larger Systems

Students continue the study of high-level data organization techniques. Topics include representations and algorithms for trees and graphs; file organization techniques; sequential, direct and indexed files; B-trees; and inverted and multi-list files. (4 credits) Prerequisite: CS 220

CS 262 Computer Organization and Digital Logic: The Physiology at the Basis of All Computers — The Logical and Physical Structures of Digital Computation

This course presents the internal structure of a computer, an introduction to assembly language, and the design of digital logic circuits and their use in structuring the various functional components of a computer, such as the memory and central processing unit. Topics include machine organization, machine language, assembly language, logic gates, flip-flops, decoders, multiplexers, registers, combinatorial logic, and sequential circuits. (4 credits) Prerequisite: MATH 153

CS 272 Discrete Structures: Models and Mathematics of the Structures of Natural Law at the Basis of Computation

Discrete mathematics is becoming increasingly important because of its wide applicability in computer science, as well as in management and the other sciences. Two key processes in discrete mathematics studied in this course are algorithmic problem solving and recursion. Topics include —logic and sets, graph theory, and difference equations. (Same as MATH 272) (4 credits) Prerequisite: MATH 162

CS 310 Systems Programming: Connecting Hardware and Software — The Most Fundamental Level of Software in the Operating System

Students learn the systems programs that link the outer activity of high-level programming languages with the internal activity of the computer hardware. Knowledge of this deeper level of systems programs gives a greater range of possibilities to the programmer. Students learn system software such as compilers, linkers, loaders, and debuggers, and the structure and functions of an operating system including device management, process management, system calls, and memory management. (4 credits) Prerequisite: CS 222 and CS 272

CS 335 Software Development: Applying Knowledge of Software Systems for Greater Skill in Action

CS 336 Software Development Laboratory: Practical Experience in Applying the Knowledge of Computer Science to Create Software Systems

In these courses, students participate in a comprehensive system development project to apply and integrate the concepts of software design and implementation. Topics include methods and tools for large system development including analysis, design, testing, and documentation. Students work in teams to develop a substantial programming project. (4 credits each) Prerequisite: CS 222

CS 350 Programming Languages: The Abstractions at the Basis of Programming Languages — Gaining Mastery Over All Programming Languages

This course involves substantial programming exercises that give students practical experience with several different programming language paradigms. Topics include syntax and semantics of programming languages; data types and structures; control flow including blocks, subroutines, and recursion; implementation methods for semantic features; and comparison of several programming languages. (4 credits) Prerequisite: CS 222

CS 362 Computer Architecture: The Physiology of Computing Systems — The Physical Structures Reflecting the Underlying Computational Processes

This course investigates the levels and components of computer hardware as they contribute to the functioning of the computer. Topics include RTL systems and notations, bus structures, arithmetic logic units, execution and control design, micro-program control, input-output interface, hardware-software interactions, and microprocessors. Students study the integration of these system components in a sample uni-processor system and through case studies of actual machines. (4 credits) Prerequisite: CS 262

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. Prerequisite: CS 220

CS 398 Computer Programming Internship: Knowledge and Experience for Maximum Growth

This course offers practical, professional experience in computer programming. Students apply classroom knowledge to an industrial or University project. During the internship, students submit detailed reports of their computer programming activities. (2 credits) Prerequisite: consent of the department faculty and the Academic Standards Committee

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 credits) Prerequisite: CS 220 or equivalent

CS 410 Modeling and Simulation: Software Models and Methods to Represent the Dynamics of Natural Law

This course studies models to enable a computer to simulate and predict the behavior of systems. Topics include discrete and continuous models, queuing models, process and event simulations, computer system models, and simulation languages and systems. (4 credits) Prerequisites: CS 401 or consent of the department faculty.

CS 420 Numerical Analysis: Methods to Map Nature’s Infinite Precision into Finite Computing Systems

Scientific and engineering computer application requires advanced numerical techniques of manipulating and solving complex systems of equations with great efficiency and minimum error. Topics include numerical solution of linear equations, curve fitting, interpolation and polynomial equations, numerical integration and differentiation, solution of nonlinear equations, and error analysis. (4 credits) Prerequisites: CS 401 or consent of the department faculty.

CS 422 Database Management Systems: Capturing the Organizing Power of Information in Structured Models, Representations, and Query Languages

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 schemas; file organization techniques; data security and integrity; and study of a specific commercial database management system. (4 credits) 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 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 credits) Prerequisite: CS 401 or consent of the department faculty.

CS 435 Algorithms: The Dynamics of Intelligence — The Relationship of Structure and Dynamics as the Basis for Efficient and Practical Software Development

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 credits) Prerequisites: CS 401 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 credits) Prerequisite: CS 401 or consent of the department faculty.

CS 450 Computer Communication Networks: Connecting the Parts and Whole — Frictionless Flow of Information

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) Prerequisites: CS 401 or consent of the department faculty.

CS 455 Software Technologies: Advanced Principles of Natural Law in Software Systems

This course will cover the most current emerging methods, principles, and practices in software technologies and systems. The topics will vary, based on current technologies and instructor choices. (2 or 4 credits) Prerequisite: CS 401 or consent of the department faculty.

CS 460 Scientific Computing: Software Models and Methods to Represent the Mathematical Precision of Natural Law

This course presents methods and principles for the application of computing systems to scientific and engineering problems. Areas studied in this course are numerical methods, scientific computation, and applications. Specific topics covered are computational efficiency, accuracy and precision, root finding, Taylor series and function evaluation, interpolation and approximation, finite difference calculus, curve fitting, and numerical integration. (4 credits) Prerequisites: CS 401 or consent of the department faculty.

CS 465 Operating Systems: The Most Fundamental Level of Software — Organizing Hardware Resources into Coherent Virtual 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 credits) 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 availability. 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

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, and 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. (2 or 4 credits) Prerequisite: CS 401 or consent of the department faculty.

CS 470 Knowledge-Based Systems: Knowledge is the Basis of Thinking, Action, and Achievement — Creating Intelligent Software Systems

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 credits) Prerequisite: CS 401 or consent of the department faculty.

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++, the OpenMP threading standard, and the Message-Passing Interface (MPI) standard. In addition to multi-core processors, this course also covers techniques for programming a computer cluster (many individual workstations networked together and working collectively on a single computation) (4 credits) Prerequisite: CS 401 or consent of the department faculty.

CS 472 Web Programming

Learn to develop Web 2.0 applications using many newer technologies such as XHTML, CSS, JavaScript, PHP, MySQL, and Ajax. The course features a project-based approach to learning with hands-on exercises requiring programming skills. Students apply design strategies to make scalable websites and access data from other websites and servers. Emphasis will be on programming and solving design issues. (4 credits) Prerequisite: CS 401 or consent of the department faculty.

CS 475 Computer Graphics: How to Represent and Graphically Express the Dynamic Intelligence Captured in Software Systems

One of the fastest growing areas of computer technology, computer graphics is used extensively to present the vast amount of information resulting from a computing process. This course studies data representation, display devices and graphics hardware, display lists, device independence, two-dimensional and three-dimensional graphics, display of curves and surfaces, hidden line and hidden surface removal, shading and rotation techniques, graphics languages, and introduction to image processing. (2–4 credits) Prerequisite: CS 401 or consent of the department faculty.

CS 476 Image Processing: Visual Expression of Total Knowledge

The course presents the concepts and operations of digital image processing, which treats all images as a collection of binary pixels. The course studies how these billions of parts are treated as a single integrated image, and the mathematical and algorithmic aspects of and tools for processing these images. Topics include image representation and transformations, filtering, and Fourier domain filtering and transformations, edge detection, segmentation, and other processing operations. The course includes a substantial lab component. (2-4 credits) Prerequisite: CS 401 or consent of the department faculty.

CS 485 Theory of Computation: The Abstract Basis of All Possibilities in Computation

Formal abstract models of computation study the fundamental limitations and capabilities of computers. This course presents a hierarchy of increasingly sophisticated abstract machines in relation to their increasing ability to recognize more general classes of formal languages. Topics include formal grammar, finite-state machines, equivalence of finite-state machines, right-linear and left-linear grammar, context-free languages, Turing machines, unsolvable problems, and recursive functions. (4 credits) Prerequisite: CS 401 or consent of the department faculty.

CS 487 Distributed Computing and XML

This course will investigate the uses of XML in distributed computation. First an understanding of the W3C specifications for XML, XML Schema, XPath, XML namespaces, XSLT and XQuery will be acquired. Then three important applications of XML in distributed computing will be investigated: syndication, Web services and Ajax. Finally, advanced issues such as encrypted XML and binary XML will be considered. There will be daily labs using .NET 2.0. (4 credits) Prerequisite: CS 401 or consent of the department faculty.

CS 490 Topics in Computing

This course surveys and studies current technologies and application areas in computing. Typically it will include a substantial research and laboratory component to gain experience with advanced areas of computing and computer science. (2–4 credits) Prerequisite: CS 401 or consent of the department faculty.

The content of this page was reviewed in January 2010.

back to top

The University is accredited by The Higher Learning Commission • www.ncahlc.org
Maharishi University of Management • Fairfield, Iowa 52557 • (641) 472-7000
Office of Admissions: (800) 369-6480 or (641) 472-1110
Copyright and Service Mark NoticeConsumer InformationContact the webmaster