2013-14 Course Descriptions
CS 111 Introduction to Computer Science(2-0-1), fall. Introduces classic computational problems using logic and algorithms, but without programming. Emphasizes foundational ideas and terminology for further study of computer science. Topics include: numbers, sets, linear data structures, graphs, state diagrams and operations on these. Prerequisites: SAT math score of 500; ACT math score of 20; MATW 019; COMPASS placement into MATH 109.
CS 115 Introduction to Programming using Scripting (3-0-3), fall, spring, summer on demand. An introduction to computer programming using a scripting language such as Python or PHP, with an emphasis on problem solving and logic. Topics include: variables and constants, arithmetic operations, data input and output, Boolean logic, conditional and iterative program control structures, user-defined functions, simple algorithm design, and debugging strategies.
CS 116 Applied Programming Using Scripting (3-0-3), fall, spring, summer on demand. A deeper exploration of computer programming using a scripting language such as Python or PHP, with a greater emphasis on algorithm design. Topics include strings, arrays, and other advanced data types, reading and writing files, modules, exception handling, recursion, regular expressions, and complex algorithm design. Prerequisites: CS 115 with a grade of C or better.
CS 120 Programming I (3-0-3), fall, spring. Programming, debugging, and small program development in a statically typed procedural language. Topics include sequential, selective, and iterative control flow, modularity, simple data types, arrays, formatted input and output and text file processing. Prerequisite: Completion of CS 111 with a grade of C or better, or concurrent enrollment in MATH 124 or MATH 185.
CS 130 Programming II: Data Structures (3-0-3), fall, spring. An introduction to programming emphasizing implementation details such as pointers, array and data structure physical memory layout, stack conventions for function calls, string manipulation, heaps, allocation, object construction including canonical object form for C++, and portability. The primary language is C++, with substantial reference to C, and assembly language. Prerequisite: CS 120 with a grade of C or better.
CS 220 Computer Organization (3-0-3), spring. An introduction to machine organization covering digital circuits, functional units, caches, virtual memory, devices, the interrupt mechanism, and bus arbitration in the context of a single-user system. Prerequisite: CS 111 and CS 130 with a grade of C or better.
CS 230 Object-Oriented Programming (3-0-3), fall. Principles and concepts of programming under the object-oriented paradigm using a language such as C++ or Java. Topics include: data abstraction and problem decomposition, information hiding, encapsulation, inheritance, polymorphism, templates, exception/event handling, multi-threading, concurrency, debugging, graphical user interfaces, and documentation. Emphasis on satisfying user specifications in application development. Prerequisite: CS 130.
CS 301 Language Lab (0-1-1), on demand. An introduction to the syntax, semantics and use of a currently popular programming language or paradigm with emphasis on the features unique to that topic. May be repeated if a different topic is offered. Prerequisites: CS 230 with a grade of "C" or better or approval of the instructor.
CS 311 Contest Programming (0-1-1), on demand. A lab for programming practice, development of problem analysis skills, and general problem solving in the context of a formal programming contest environment. Prerequisites: CS 130 with a grade of "C" or better.
CS 315 Mobile Computing I (3-0-3), fall. Introduces the Development of applications for mobile computing and technology. Students learn to develop applications for mobile computing devices such as the iPhone and iPod Touch. Includes theory, concepts, and hands-on programming. Assumes a strong programming background. Prerequisite: IT 220 and CS 116 or CS 120.
CS 316 Mobile Computing II (3-0-3), spring. Continues Mobile Computing I, developing more complex applications for mobile devices such as the iPhone and iPod Touch. Includes theory, concepts, and hands-on programming. Assumes a strong programming background. Prerequisite: CS 315.
CS 320 Database Programming and Design (3-0-3), on demand. Database theory with an emphasis on relational databases. Include data representation, relations, base tables, indexes, SQL, relational algebra, and relational calculus. Exercises will be done on a state-or-the-art relational database. Prerequisite: CS 130, IT 220.
CS 330 The Human-Computer Interface (3-0-3), fall, on demand. Introduction to both the programmatic and psychological considerations surrounding shaping the computer tool to the user. The course will cover the details of implementing a graphical user interface, and how to make the interface as user-friendly as possible. Prerequisites: CS 116 or CS 120.
CS 332 Design and Analysis of Algorithms (3-0-3), fall. Design and scientific and mathematical study of algorithms. Analytic and experimental performance determination. Includes searching and sorting, trees, graphs, asymptotic (e.g., big-O) performance bounds, and the halting problem. Prerequisites: CS 130 and MATH 227 with a grade of C or better.
CS 341 Numerical Methods (3-0-3), fall, even years. Survey of elementary numerical methods used in scientific computing applications. Topics include computer representation of integer and real numbers, sequences, series approximations, finite differences, interpolation, curve fitting, numerical differentiation and integration, and roots of a single non-linear equation. Selected algorithms to be solved using the computer. Prerequisite: MATH 186 and CS 120. Same as MATH 341.
CS 352 Programming Languages (3-0-3), spring, on demand. Students will improve their understanding of languages, increase their vocabulary of useful programming constructs, and be able to learn or design a language more easily. Prerequisites: CS 230.
CS 355 Compiler Construction (3-0-3), fall, on demand. A practical treatment of programming language translation and compiler construction techniques. Emphasis is on regular grammars, lexical analysis, parsing, syntax analysis, semantic analysis, and code generation. Prerequisite: CS 220 with a grade of C or better.
CS 356 Operating Systems (3-0-3), spring, on demand. Topics include dynamic procedure activation, system structure, evaluation, memory and process management, and recovery procedures. Prerequisites: CS 220.
CS 365 Theory of Computation (3-0-3), spring, odd years. Introduction to formal languages and automata, computability, and complexity. Topics include the DFAs, CFGs, pumping lemmas, Turing machines, the Church-Turing Thesis, non-determinism, and NP-completeness. Prerequisites: CS 220 and 332.
CS 370 Logic and Formal Reasoning (1-0-1), on demand. This course provides an overview of one or more systems of formal logic closely related to computer science. Topics will include modal, propositional and predicate logic. Formal reasoning systems will be applied in the specification and verification of computer programs. Prerequisites: CS 220 with a grade of C or better and MATH 227 with a grade of C or better.
CS 374 Software Engineering (3-0-3), fall, on demand. A study of the development of large scale software systems. Includes an overview of currently used analysis and design methodologies, including both structured and object-oriented paradigms. Projects will afford practical experience in the development of interpersonal communication skills needed for team software development. Prerequisite: CS 230 with a grade of "C" or better.
CS 376 Software Testing and Quality Assurance (3-0-3), on demand. A study of software quality assurance and the software testing process, including methods, techniques and tools. Topics include: formal review techniques, verification and validation, black box testing, integration testing, acceptance testing, regression testing, performance testing, stress testing and testing of object-oriented software. Also presents an introduction to automated testing software. Prerequisite: CS 374.
CS 381 Computer Graphics (3-0-3), on demand. A study of 2D and 3D rendering algorithms and representations, including homogeneous coordinate systems and their attendant transformations. Includes study of light and color and a survey of photo-realistic 3D rendering techniques. Prerequisites: CS 220, MATH 325.
CS 420 Networks and Distributed Computing (3-0-3), fall, odd years. A survey of the concepts and theory of networks and distributed data processing. Topics include data communications principles, network architectures and topology, distributed databases, client server computing, congestion control, distributed processing, message passing systems, shared memory, distributed objects, process scheduling and coordination, resource sharing, deadlock, interrupt handlers, and web-centric computing in the context of a multi-user system. Prerequisites: IT 221.
CS 442 Numerical Analysis (3-0-3), spring, odd years. Solution of linear systems of equations by direct and iterative methods, matrix inversion, and evaluation of determinants. Matrix solution of least square problems. Approximation of eigenvalues. Selected algorithms to be solved using the computer. Prerequisites: CS 341; MATH 325. Same as MATH 442.
CS 467 Introduction to Artificial Intelligence (3-0-3), spring, even years. Survey of the search, reasoning, control, learning, and knowledge representation principles underpinning intelligent systems such as games, theorem provers, expert systems, neural networks, planning, machine learning, and natural language. Prerequisite: CS 332.
CS 474 Object-Oriented Design (3-0-3), spring, even years. Systematic object-oriented design. Topics include interface design, design patterns, and the implementation of a medium-sized application. Prerequisite: CS 230.
CS 495 Senior Seminar (3-0-3), fall. Supervised study of selected topics in the field of computer science that are not normally or not often available as part of the regular course offerings. A comprehensive term project is normally required. For computer science majors; must be taken during the last fall semester before graduation. Prerequisite: Senior standing. A writing-intensive course.
Wildcat Video Minute
Satisfy your curiosity about what it means to live and learn at ACU!
Apply to ACU