Curriculum | Degree Checklist
| Pre-requisite Graph
| Minor in CS
Four Year Schedule - Precalculus
| Four Year Schedule - Calculus
The Computer Science courses and their catalog descriptions are listed in numerical order below. We provide this online copy of the course descriptions as a service to our students and prospective students. For the official listing of courses, please consult the current Armstrong catalog. You can also take a peek at a typical student's four-year schedule.
- 2000 level courses
- 3000 level courses
- 4990 level courses
- 5000 level courses
- CSCI 1050: Introduction to Computer Concepts and Applications
- Prerequisite: MATH 1101 or MATH 1111
Study of hardware and software components of computers, and the impact of the computer on society. Discussion of the capabilities and the limitations of computers, and the kinds of problems that are best solved by computers. Experience with using personal computer productivity tools to solve problems. Emphasis on the major uses of computers. Not designed for the computer science major. Credit granted for only one of CSCI 1050, CSCI 1060, or CSCI 2060. - CSCI 1060: Computer Concepts and Applications for Science Students
- Prerequisite or co-requisite: MATH 1113
Introduction to computing and algorithmic development including data structures (not computer programming). Laboratory emphasis on using personal computer productivity tools. Includes operating systems and application of standard tools to solve typical problems from science and engineering. Credit granted for only one of CSCI 1050, CSCI 1060, or CSCI 2060. - CSCI 1150: Fundamentals of the Internet and World Wide Web
- Prerequisite: MATH 1101 or MATH 1111
Topics covered include electronic mail, Internet service providers, text editing, basic UNIX programming, researching and publishing online, the Internet, the World Wide Web, searching the World Wide Web, telnet and FTP, HTML programming, Web graphics, newsgroups, mailing lists, chat rooms, programming CGI scripts, multimedia, and privacy and security issues. - CSCI 1301: Introduction to Programming Principles
- Prerequisite: MATH 1113
Overview of computers and programming. Fundamentals of structured computer programming; primitive data types, expressions, control statements, methods, recursion, arrays, searching, sorting; debugging techniques; introduction to algorithm analysis. - CSCI 1301H: Honors Introduction to Programming Principles
- Prerequisite: MATH 1113 and at least one of the following: acceptance to honors program or permission of the instructor.
A more in-depth treatment of the topics covered in CSCI 1301, with extended examples from the natural sciences, mathematics, humanities, and the research programs of the faculty of the School of Computing. - CSCI 1302: Advanced Programming Principles
- Prerequisite: CSCI 1301
Object-oriented programming including: abstract data types, inheritance, polymorphism, interfaces, graphical user interfaces and event-driven programming, exception handling, file input and output. - CSCI 2060: Computer Literacy for Educators
- Prerequisite: MATH 1111
Hardware and software components of computers, elementary programming and the impact of computers on curriculum. Discussion of the capabilities and limitations of computers, and the kinds of problems that are best solved by computers. Experience with developing and modifying algorithms to solve such problems. Emphasis on instructional uses of microcomputers. Not designed for the computer science major. May not be applied as part of a language sequence. Credit granted for only one of CSCI 1050, CSCI 1060, or CSCI 2060. - CSCI 2070: Introduction to Computer Ethics and Cybersecurity
- Prerequisite: ENGL 3720 and either CSCI 1302 or ITEC 1310
Study of ethical considerations for computer science professionals and users. Topics include issues of privacy, intellectual property rights, and cybercrime. - CSCI 2201: Unix and Secure Web Development
- Prerequisite: CSCI 1301
Thorough introduction to the UNIX operating system. UNIX commands, editors, documentation, and file system. Shells, redirection, filters, pipes, and job control. Compile/edit/debug cycle under UNIX. Install and administer a UNIX system and deploy a secure Web server. Program dynamic Web applications using technologies such as PHP and SQL databases. Performance tuning and hands-on study of UNIX and Web application security vulnerabilities. - CSCI 2410: Data Structures and Algorithms
- Prerequisite: CSCI 1302 and MATH 1161
Analysis of their time and space complexity. Implementation and analysis of efficient data structures (for example, linked lists, stacks, queues, hash tables, trees, graphs, and heaps) and algorithmic techniques (for example, dynamic, greedy, randomized, and approximation). Use of professional application programmer interfaces (API's). - CSCI 2490: Object-Oriented Programming in C++
- Prerequisite: CSCI 2410
Object-oriented programming in C++ with an emphasis on the implementation of efficient dynamic data structures (e.g., linked lists, stacks, queues, hash tables, trees, graphs, and heaps). - CSCI 2620: Discrete Structures for Computer Science
- Prerequisite: CSCI 1302 and MATH 2072
Introduction to propositional and predicate logic; naive set theory; relations and functions; graphs; induction and recursion; counting techniques. - CSCI 2990: Topics in Computer Science
- Prerequisite: announced with the topic
Special topics at freshman and sophomore level of current interest in computer science. - CSCI 3201: Computer Organization and Architecture I
- Prerequisite: CSCI 1302 and CSCI 2201
Hardware and software concepts of digital computing systems, with emphasis on fundamental system software and details of hardware operation. Virtual machines, systems organization, digital logic, instruction and data formats, addressing modes, error detecting and correcting codes, and register transfer notation. - CSCI 3202: Computer Organization and Architecture II
- Prerequisite: CSCI 3201
Continuation of the topics covered in CSCI 3201. Instruction types, assembly language programming, flow of control, microprogramming, the memory hierarchy, virtual memory, cache organization, and advanced computer architectures (including RISC machines and parallel architectures). - CSCI 3321: Introduction to Software Engineering Concepts
- Prerequisite: CSCI 2410, CSCI 3201, and ENGL 3720
Principles and techniques of designing and implementing software systems, including system life-cycle models, planning techniques, requirements analysis and systems specifications, human interfaces, design, implementation, testing, maintenance, team structure, project management. A student project encompassing some or all of these techniques with oral and written presentation. - CSCI 3330: Comparative Languages
- Prerequisite: CSCI 2490
Comparative study of programming languages including facilities for procedures, parameter passing and recursion, control structures, and storage allocation techniques. Methods of specifying syntax and semantics. Introduction to program translation. - CSCI 3341: Introduction to Operating Systems
- Prerequisite: CSCI 3202
Concepts, structure, and mechanisms of operating systems. Topics include processes, concurrency, memory management, scheduling, I/O management, disk scheduling, file management, basic aspects of protection and security, distributed systems. - CSCI 3510: Theory of Computation
- Prerequisite: CSCI 2620
Computational machine models, including finite automata, pushdown automata, and Turing machines, and their associated language classes. - CSCI 3720: Database Systems
- Prerequisite: CSCI 2410
Database management system concepts and architecture; the relational, hierarchical, network, entity-relationship, and other models; design concepts; and internal implementation techniques. - CSCI 3961/3972/3983: Internship in Computer Science
- Prerequisite: Permission of Instructor or program coordinator.
Practical study experiences in a variety of computing environments under the direction of faculty and appropriate off-campus supervisors. - CSCI 3990: Programming Seminar
- Prerequisite: CSCI 1302
Development of problem solving techniques in a team environment. (Designed for but not restricted to, programming contests.) - CSCI 4390: Senior Project
- Prerequisites: CSCI 3321 and permission of instructor or department.
Development of requirement definitions, architectural design specifications, detailed design specification, testing plan, documentation, and implementation for the software and/or hardware components of a comprehensive project. Oral and written presentation of project required. - CSCI 4990: Special Topics in Computer Science
- Prerequisite: announced with topic
Selected topics in some area of current interest in computer science. Possible areas include system simulation, graphics, microcomputers, and theoretical computer science. - CSCI 4999: Independent Study
- Prerequisite: permission of the instructor
- CSCI 5100U: Object-Oriented Programming
- Prerequisite: CSCI 3321
An advanced study of the object-oriented paradigm for software development. Topics include abstract data types, classes, contracts, design patterns, inheritance, polymorphism, OO languages and design methods. - CSCI 5210U: High Performance Computing
- Prerequisite: CSCI 2490 and CSCI 3341
High performance software development for modern hardware. Optimization techniques at the algorithm, architecture, and processor levels. Introduction to practical vector, multi-threaded, and parallel computing concepts. Programming required. - CSCI 5220U: Networks
- Prerequisite: CSCI 3202
Introduction to data communications and networking. Topics including communications media, codes, data transmission, multiplexing, protocols, and layered networks. - CSCI 5322U: Advanced Software Engineering
- Prerequisite: CSCI 3321 and ENGL 3720
Advanced software engineering principles, including software processes and methodologies, CASE tools, software metrics, software quality assurance, reusability and reengineering, and future trends. A major project encompassing some or all of these concepts. - CSCI 5342U: Advanced Operating Systems
- Prerequisite: CSCI 3341 and CSCI 2490
Case studies of UNIX (tm) and/or similar operating systems. Elementary knowledge of C/C++ required. - CSCI 5343U: Systems Programming under UNIX (tm)
- Prerequisite: CSCI 2490 and CSCI 3341
UNIX (tm) system programming techniques in C. Topics include I/O forking, pipes, signals, interrupts software tools, macros, conditional compilation, passing values to the compiler, lint, symbolic debugging, source code control, libraries. - CSCI 5350U: Compiler Theory
- Prerequisites: CSCI 3330 and CSCI 3510
Programming language translation and basic compiler implementation techniques, formal grammars and languages, specification of syntax and semantics, lexical analysis, parsing, and semantic processing. A major project encompassing some or all of these concepts. - CSCI 5360U: Embedded Systems Programming
- Prerequisites: CSCI 3202 and CSCI 2490
Developing applications for embedded microprocessors including virtual machine architectures, data communications, time critical I/O, cross compiling, and debugging techniques. - CSCI 5370U: Handheld and Ubiquitous Computing
- Prerequisite: CSCI 3202
Survey of personal digital assistants (PDAs) and ubiquitous computing hardware, operating systems, virtual machines, and APIs. Development of PDA applications, cross compiling and hardware emulation, PDA GUI design, Infra-Red and wireless data communications, and desktop conduit development. - CSCI 5410U: Analysis of Algorithms
- Prerequisites: CSCI 2410 and CSCI 2620
Advanced techniques for designing and analyzing efficient algorithms for combinational, algebraic, and number-theoretic problems. - CSCI 5520U: Rapid Java Application Development
- Prerequisites: CSCI 2410 and CSCI 2620
Study of rapid application development techniques for producing software with minimum coding. Includes component-based software development, JavaBeans, event delegation model, model-view approach, and Swing components. - CSCI 5610U: Numerical Analysis
- Prerequisites: CSCI 1301 and MATH 2072
Cross listed as MATH 4610.
Introductory numerical analysis and scientific computation. Topics include computer arithmetic, numerical error, polynomial interpolation, systems of linear equations, iterative methods for nonlinear equations, least squares approximation, numerical and integration. - CSCI 5700U: Computer Security
- Prerequisites: CSCI 5220U or CSCI 5410U
Key concepts and algorithms involved in cryptography and computer security. Includes intrusion detection, firewalls, and digital signatures. - CSCI 5720U: Advanced Database Systems
- Prerequisite: CSCI 3720
Survey of database systems, query processing and optimization, transactions, currency control, security, data mining, XML, web data, and Internet commerce. - CSCI 5735U: Data Mining
- Prerequisite: CSCI 3720
Study of data mining functionalities including characterization and discrimination, classification and prediction, cluster analysis, association analysis, outlier analysis, evolution analysis; data mining system architectures; data mining query languages; and OLAP technology for data mining. Multiple projects encompassing a number of the discussed concepts. - CSCI 5820U: Machine Learning
- Prerequisites: CSCI 2490 and CSCI 2620
Pattern matching and classification with an emphasis on developing applications using diverse machine learning methods, including decision trees, neural networks, clustering, and hidden Markov models. Includes a major project encompassing some or all of these concepts. - CSCI 5825U: Artificial Intelligence
- Prerequisite: CSCI 3330
An introduction to machine intelligence, problem solving paradigms, search in state spaces, inference methods, expert systems, game trees, natural language understanding, intelligent agents, multi-agent systems, robotics, and logic and theorem proving. - CSCI 5830U: Computer Graphics
- Prerequisite: CSCI 2490 and MATH 2160
Introduction to computer graphics programming. Topics include graphics programming standards, two- and three-dimensional rendering pipelines, geometric models (including primitives, fonts, curves, and surfaces), affine transformations, orthogonal and perspective views, shading and lighting models, images and texture mapping, interactions and animations. Major project encompassing some or all of these concepts. - CSCI 5835U: Graphics Rendering Principles
- Prerequisite: CSCI 2490
Prerequisite/co-requisite: MATH 2160
Fundamentals of rendering algorithms, modern graphics architectures, and the mapping between the two. Detailed discussion of color, transformation, rasterization, lighting, texture mapping, shading, shadowing, and blending algorithms. Review of non real-time as well as non photo-realistic methods. Multiple projects encompassing a number of the discussed approaches.
Return to the top of this page.