Department of Computer Science
(College of Humanities, Arts and Sciences)
The Department of Computer Science offers the following undergraduate and graduate program, and program certificates. Specific requirements for these programs are listed within this Department of Computer Science section in the following order:
- Undergraduate Majors (B.S.)
- Computer Science
- Networking and System Administration
- Undergraduate Major (B.A.)
- Computer Science
- Minor
- Computer Science
- Program Certificates
- Certificate in Computer Applications
- Certificate in Computer Science
- Certificate in Software Testing
Notes:
- Undergraduate students who have been admitted to the university provisionally because of non-satisfaction of the high school mathematics requirements may not enroll in any computer science credit course before this requirement has been met.
- All courses counting toward a major or minor in the Department of Computer Science must be passed with a grade of C- or better.
- Prerequisite courses in the Department of Computer Science must be passed with a grade of C before taking a subsequent course.
- All majors in the Department of Computer Science require a project course (marked with asterisk in the degree statements). The course used to meet this requirement is to be taken in the area of specialization, i.e., an area in which at least three courses are taken.
- All courses in a prerequisite chain to a course are considered regressive to it - students may not take them for credit after passing the later course. Additionally, 810:030 and 810:036 are regressive to 810:052 and any course having it as prerequisite.
- All computer science majors must complete the department’s core assessment exam before enrolling in any 100-level course/course numbered 2420 or above required for their major.
- All computer science majors must complete the department’s program assessment exam before graduating.
Bachelor of Science Degree Programs
Computer Science Major
The B.S. Computer Science major requires a minimum of 126 total hours to graduate. This total includes Liberal Arts Core requirements and the following specified major requirements, plus electives to complete the minimum of 126 hours.
| Required | ||
| Computer Science: | ||
| CS 1410 (810:041) | Computer Organization | 3 |
| CS 1510 (810:051) | Introduction to Computing | 4 |
| CS 1520 (810:052) | Data Structures | 4 |
| CS 1800 (810:080) | Discrete Structures | 3 |
| CS 2530 (810:053) | Intermediate Computing | 3 |
| Research: | ||
| CS 4800 (810:180) | Undergraduate Research in Computer Science (topic pre-approved by department) | 1 |
| Electives | ||
| Mathematics: | ||
| Select four from the following: | 13 | |
| Calculus I ^,# | ||
| Calculus II # | ||
| Linear Algebra for Applications | ||
| Numerical Analysis | ||
| Combinatorics | ||
| Introduction to Probability | ||
| Introduction to Statistical Methods | ||
| Computer Science: | 24 | |
| Eight courses including: | ||
A specialization of three courses from the Foundations area | ||
A specialization of three courses from one other area | ||
One course from each of the remaining two areas | ||
One of the specializations must include a project course (marked with an asterisk*) | ||
Foundations: | ||
| Design and Analysis of Algorithms | ||
| Programming Languages and Paradigms | ||
| Artificial Intelligence # | ||
| Theory of Computation | ||
| Translation of Programming Languages * | ||
| Intelligent Systems * | ||
| Topics in Computer Science | ||
Information Science: | ||
| User Interface Design * | ||
| Database Systems | ||
| Information Storage and Retrieval | ||
Software Engineering: | ||
| Software Engineering | ||
| Project Management * | ||
| Software Testing * | ||
| Real-Time Embedded Systems *,# | ||
Systems: | ||
| Computer Architecture | ||
| Operating Systems | ||
| Networking | ||
| System Administration * | ||
| System Security * | ||
| Electives: | 6 | |
Two additional courses selected from some of the computer science "area" courses, CS 2650 (810:165), CS 3650/5650 (810:166g) and 100/300-level courses meeting the mathematics requirements. | ||
| Total Hours | 61 | |
| ^ | MATH 1420 (800:060) has prerequisite of MATH 1140 (800:046), or MATH 1110 (800:043) andMATH 1130 (800:044), or equivalent.
|
| * | One course marked with an asterisk must be completed. |
| # | MATH 1420 (800:060), MATH 1421 (800:061), and CS 4740/5740 (810:174g) are 4-hour courses. CS 3610/5610 (810:161g) is a 4-hour course if taken with lab. |
Networking and System Administration Major
The B.S. Networking and System Administration major requires a minimum of 126 total hours to graduate. This total includes Liberal Arts Core requirements and the following specified major requirements, plus electives to complete the minimum of 126 hours.
| Required | ||
| Technology: | ||
| TECH 1037 (330:037) | Introduction to Circuits | 3 |
| TECH 1039 (330:039) | Circuits and Systems | 3 |
| TECH 3156 (330:156) | Advanced Digital Electronics | 3 |
| TECH 4104/5104 (330:104g) | Applied Digital Signal Processing | 3 |
| Mathematics: | ||
| MATH 1420 (800:060) | Calculus I ^ | 4 |
| Computer Science: | ||
| CS 1410 (810:041) | Computer Organization | 3 |
| CS 1510 (810:051) | Introduction to Computing | 4 |
| CS 1520 (810:052) | Data Structures | 4 |
| CS 1800 (810:080) | Discrete Structures | 3 |
| CS 4400/5400 (810:140g) | System Administration | 3 |
| CS 4410/5410 (810:141g) | System Security | 3 |
| CS 3470/5470 (810:147g) | Networking | 3 |
| CS 4800 (810:180) | Undergraduate Research in Computer Science (1 hr.)) | 1 |
| Physics: | ||
| PHYSICS 1511 (880:054) | General Physics I | 4 |
| PHYSICS 1512 (880:056) | General Physics II | 4 |
| Electives | ||
| From one of the following areas: | 9 | |
Computer Science: | ||
| Operating Systems | ||
6 additional hours of computer science [100-level courses numbered 2420 or above, excluding CS 2134 (810:134) and CS 3510 (810:151)]. * | ||
Technology: | ||
| Introduction to Analog Electronics | ||
| Advanced Analog Electronics | ||
| Electronic Communications | ||
| Total Hours | 57 | |
| ^ | MATH 1420 (800:060) has prerequisite of MATH 1140 (800:046), or MATH 1110 (800:043) and MATH 1130 (800:044), or equivalent. |
Bachelor of Arts Degree Programs
Computer Science Major
The B.A. Computer Science major requires a minimum of 120 total hours to graduate. This total includes Liberal Arts Core requirements and the following specified major requirements, plus electives to complete the minimum of 120 hours.
| Required | ||
| Computer Science: | ||
| CS 1410 (810:041) | Computer Organization | 3 |
| CS 1510 (810:051) | Introduction to Computing | 4 |
| CS 1520 (810:052) | Data Structures | 4 |
| CS 1800 (810:080) | Discrete Structures | 3 |
| CS 2530 (810:053) | Intermediate Computing | 3 |
| Electives | ||
| Mathematics: | ||
| Select two of the following: | 6 | |
| Calculus I ^,# | ||
| Calculus II # | ||
| Linear Algebra for Applications | ||
| Numerical Analysis | ||
| Combinatorics | ||
| Introduction to Probability | ||
| Introduction to Statistical Methods | ||
| Computer Science: | 18 | |
| Six courses* including: | ||
Three courses from selected specialty | ||
One course from each of the other three areas | ||
Foundations: | ||
| Design and Analysis of Algorithms | ||
| Programming Languages and Paradigms | ||
| Artificial Intelligence # | ||
| Theory of Computation | ||
| Translation of Programming Languages * | ||
| Intelligent Systems * | ||
| Topics in Computer Science | ||
Information Science: | ||
| User Interface Design * | ||
| Database Systems | ||
| Information Storage and Retrieval | ||
Software Engineering: | ||
| Software Engineering | ||
| Project Management * | ||
| Software Testing * | ||
| Real-Time Embedded Systems *,# | ||
Systems: | ||
| Computer Architecture | ||
| System Administration * | ||
| System Security * | ||
| Biogeography and Origins of Diversity | ||
| Networking | ||
| Electives | 3 | |
One additional course selected from among any computer science "area" courses, CS 2650 (810:165), CS 3650/5650 (810:166g), and 100/3000-level courses meeting the mathematics requirement. | ||
| Total Hours | 44 | |
| ^ | MATH 1420 (800:060) has prerequisite of MATH 1140 (800:046), or MATH 1110 (800:043) and MATH 1130 (800:044), or equivalent. |
| * | A project course (marked with an asterisk) must be taken as one of the three in an area of specialization. |
| # | MATH 1420 (800:060), MATH 1421 (800:061), and CS 4740/5740 (810:174g) are 4-hour courses. CS 3610/5610 (810:161g) is a 4-hour course if taken with lab. |
Minors
Computer Science Minor
| Required | ||
| Computer Science: | ||
| CS 1410 (810:041) | Computer Organization | 3 |
| CS 1510 (810:051) | Introduction to Computing | 4 |
| CS 1520 (810:052) | Data Structures | 4 |
| CS 1800 (810:080) | Discrete Structures | 3 |
| CS 2530 (810:053) | Intermediate Computing | 3 |
| Electives | ||
| Any 100-level courses numbered 2420 or above excluding CS 3510 (810:151). | 9 | |
| Total Hours | 26 | |
Program Certificates
The University of Northern Iowa makes available, in addition to traditional programs, the opportunity for students to earn program certificates. Program certificates provide an alternative to programs leading to a degree, a major, or a minor; they certify that an individual has completed a program approved by the university. For information on the following certificates, contact the Department of Computer Science or the Office of the Registrar, which serves as the centralized registry.
Certificate in Computer Applications
| Required | ||
| CS 1000 (810:021) | Computing Skills and Concepts | 3 |
| CS 1010 (810:022) | Microcomputer Applications and Systems Integration | 3 |
| CS 1020 (810:023) | Microcomputer Systems | 3 |
| Electives | ||
| Computer Science: | 3 | |
| Visual BASIC Programming | ||
| Topics in Computing | ||
Other courses pre-approved by the Computer Science Department | ||
| Total Hours | 12 | |
Certificate in Computer Science
| Required | ||
| Computer Science: | ||
| CS 1520 (810:052) | Data Structures | 4 |
| CS 1800 (810:080) | Discrete Structures | 3 |
| CS 2530 (810:053) | Intermediate Computing | 3 |
| one course from the following: | 3-4 | |
| Media Computation | ||
| Visual BASIC Programming | ||
| Introduction to Programming Environments for Education | ||
| C/C++ Programming | ||
| Introduction to Computing | ||
| Total Hours | 13-14 | |
Certificate in Software Testing
The Certificate in Software Testing prepares students for employment as testers of software that is created for their major field of study. Their major field of study gives students domain knowledge and the certificate program teaches them the computer skills needed for testing.
| Required | ||
| Computer Science: | ||
| CS 1071 (810:024) | Software Applications for Testing | 3 |
| CS 1072 (810:071) | Software Requirements Analysis | 3 |
| CS 1130 (810:030) | Visual BASIC Programming | 3 |
| CS 1800 (810:080) | Discrete Structures | 3 |
| CS 3750/5750 (810:175g) | Software Testing | 3 |
| Total Hours | 15 | |
B.S. Degree - Computer Science Major (Major Code 81S)
| Freshman | |||
|---|---|---|---|
| Fall | Hours | Spring | Hours |
| CS 1510 (810:051) | 4 | Liberal Arts Core | 6 |
| STAT 1772 (800:072) | 3 | University Elective | 3 |
| Liberal Arts Core | 6 | CS 1520 (810:052) | 4 |
| University Elective | 3 | CS 1800 (810:080) | 3 |
| 16 | 16 | ||
| Sophomore | |||
| Fall | Hours | Spring | Hours |
| Liberal Arts Core | 6 | Computer Science Area | 3 |
| University Elective | 4 | Liberal Arts Core | 6 |
| CS 2530 (810:053) | 3 | Computer Science Foundations | 3 |
| CS 1410 (810:041) | 3 | MATH 1420 (800:060) | 4 |
| 16 | 16 | ||
| Junior | |||
| Fall | Hours | Spring | Hours |
| Computer Science Foundations | 3 | Computer Science Foundations | 3 |
| Computer Science Math Elective | 3-4 | Computer Science Math Elective | 3-4 |
| Liberal Arts Core | 7 | Liberal Arts Core | 6 |
| Computer Science Area | 3 | Computer Science Specialty | 3 |
| 16-17 | 15-16 | ||
| Senior | |||
| Fall | Hours | Spring | Hours |
| Computer Science Elective | 3 | Computer Science Elective | 3 |
| Liberal Arts Core | 6 | Computer Science Research | 1 |
| University Electives | 6 | Liberal Arts Core | 2 |
| Computer Science Specialty | 3 | University Electives | 6 |
| Computer Science Project | 3 | ||
| 18 | 15 | ||
| Total credit hours: 128-130 | |||
B.S. Degree - Networking and System Administration Major (Major Code 81N)
| Freshman | |||
|---|---|---|---|
| Fall | Hours | Spring | Hours |
| CS 1510 (810:051) | 4 | Liberal Arts Core | 3 |
| TECH 1037 (330:037) | 3 | University Elective | 3 |
| Liberal Arts Core | 6 | CS 1520 (810:052) | 4 |
| University Elective | 3 | CS 1800 (810:080) | 3 |
| TECH 1039 (330:039) | 3 | ||
| 16 | 16 | ||
| Sophomore | |||
| Fall | Hours | Spring | Hours |
| Liberal Arts Core | 6 | Area Elective | 3 |
| University Elective | 3 | Liberal Arts Core | 6 |
| PHYSICS 1511 (880:054) | 4 | University Elective | 3 |
| CS 1410 (810:041) | 3 | PHYSICS 1512 (880:056) | 4 |
| 16 | 16 | ||
| Junior | |||
| Fall | Hours | Spring | Hours |
| Liberal Arts Core | 7 | Area Elective | 3 |
| University Elective | 3 | Liberal Arts Core | 6 |
| CS 3470/5470 (810:147g) | 3 | CS 4400/5400 (810:140g) | 3 |
| TECH 3156 (330:156) | 3 | TECH 4104/5104 (330:104g) | 3 |
| 16 | 15 | ||
| Senior | |||
| Fall | Hours | Spring | Hours |
| Liberal Arts Core | 6 | Area Elective | 3 |
| University Elective | 3 | Liberal Arts Core | 5 |
| CS 4410/5410 (810:141g) | 3 | University Electives | 6 |
| MATH 1420 (800:060) | 4 | Computer Science Research | 1 |
| 16 | 15 | ||
| Total credit hours: 126 | |||
B.A. Degree - Computer Science Major (Major Code 810)
| Freshman | |||
|---|---|---|---|
| Fall | Hours | Spring | Hours |
| CS 1510 (810:051) | 4 | Liberal Arts Core | 6 |
| STAT 1772 (800:072) | 3 | University Elective | 3 |
| Liberal Arts Core | 6 | CS 1520 (810:052) | 4 |
| CS 1800 (810:080) | 3 | ||
| 13 | 16 | ||
| Sophomore | |||
| Fall | Hours | Spring | Hours |
| Liberal Arts Core | 6 | Computer Science Area | 3 |
| University Elective | 3 | Liberal Arts Core | 6 |
| CS 2530 (810:053) | 3 | University Elective | 3 |
| CS 1410 (810:041) | 3 | MATH 1420 (800:060) | 4 |
| 15 | 16 | ||
| Junior | |||
| Fall | Hours | Spring | Hours |
| Liberal Arts Core | 7 | Liberal Arts Core | 6 |
| University Elective | 3 | University Electives | 6 |
| Computer Science Area | 6 | Computer Science Specialty | 3 |
| 16 | 15 | ||
| Senior | |||
| Fall | Hours | Spring | Hours |
| Liberal Arts Core | 6 | Computer Science Elective | 3 |
| University Electives | 6 | Liberal Arts Core | 2 |
| Computer Science Specialty | 3 | University Electives | 6 |
| Computer Science Project | 3 | ||
| 15 | 14 | ||
| Total credit hours: 120 | |||
Courses
CS 1000 (810:021). Computing Skills and Concepts — 3 hrs.
Introduction to operation, applications, implications of computers, microcomputers, and network communications. Develops skill in current applications and sensitizes students to societal issues related to computing. (Fall, Spring)
CS 1010 (810:022). Microcomputer Applications and Systems Integration — 3 hrs.
Emphasis on developing macros and programs, importing and exporting files between applications, solving and implementing applications and problems, and other more advanced topics. Examination of software such as word processing, spreadsheets, and database languages. Prerequisite(s): CS 1000 (810:021) or equivalent. (Fall)
CS 1020 (810:023). Microcomputer Systems — 3 hrs.
Functional description of microcomputer operating systems; commands and utilities, system and file organization, memory and file management, troubleshooting strategies, and networks. Prerequisite(s): CS 1010 (810:022) or any one-semester programming course. (Spring)
CS 1025 (810:025). Computational Modeling and Simulation — 3 hrs.
Explores computational approaches to solving complex problems using computational tools and dynamic and discrete simulations. Topics include problem representation, modeling, simulation, and model/simulation validation, with applications in the sciences, social sciences, and business. (Fall, Spring)
CS 1050 (810:020). Computing for All — 3 hrs.
Develops an understanding of computing that allows more fluent use of computers. Topics include computer capabilities and operation, the Internet, privacy, information security, intelligent applications, and end-user programming. No credit available to Computer Science majors. (Fall, Spring, Summer)
CS 1071 (810:024). Software Applications for Testing — 3 hrs.
Introduces productivity tools used by software testers including word processors, spreadsheets, and databases. Develops skills for producing and integrating text, spreadsheet, and database files in a software testing context. (Variable)
CS 1072 (810:071). Software Requirements Analysis — 3 hrs.
Software analysis techniques including graphic modeling, use of CASE tools, and document production. Techniques for problem understanding, requirements identification, and validation and verification are also addressed. Prerequisite(s): CS 1130 (810:030); CS 1800 (810:080). (Variable)
CS 1100 (810:017). Web Development: Client-Side Coding — 3 hrs.
Client-side Web development adhering to recent/current Web standards. Includes by-hand Web page development involving basic HTML, CSS, data acquisition using forms, and JavaScript for data validation and simple Web-based tools. (Fall)
CS 1120 (810:056). Media Computation — 3 hrs.
Introduction to computation, algorithmic thinking, data transformation and processing, and programming in the context of media such as images, sound, and video. (Spring)
CS 1130 (810:030). Visual BASIC Programming — 3 hrs.
Programming using the language Visual BASIC. Broad coverage of language syntax, programming practice, and programming problems appropriate to the novice or end-use programmer using a personal computer. (Fall, Spring)
CS 1140. Introduction to Programming Environments for Education — 3 hrs.
Introduction to computer programming through a survey of programming environments used by teachers. Topics include structure of programming, study of several programming environments used by students at a variety of age/ability levels, and end-user programming for teachers.
CS 1160 (810:036). C/C++ Programming — 3 hrs.
Programming using the C and C++ languages including the object-oriented paradigm. Broad coverage of language syntax and programming practice. Appropriate for developers of general computing applications and systems. Course presumes no prior programming experience. (Fall)
CS 1410 (810:041). Computer Organization — 3 hrs.
Study of computers in terms of their major functional units. Machine representations of data, digital logic, memory, CPUs, buses, and input/output. Instruction set architectures and their implementations, addressing methods, and sequencing. Assembly language programming. Prerequisite(s) or corequisite(s): CS 1510 (810:051). (Fall, Spring)
CS 1510 (810:051). Introduction to Computing — 4 hrs.
Introduction to software development through algorithmic problem solving and procedural abstraction. Programming in the small. Fundamental control structures, data modeling, and file processing. Significant emphasis on program design and style. (Fall, Spring)
CS 1520 (810:052). Data Structures — 4 hrs.
Introduction to use and implementation of data and file structures such as sets, hash tables, stacks, trees, queues, heaps, and graphs. Basic algorithm analysis. Searching and sorting. Basic object-oriented analysis, design, and modeling tools. Prerequisite(s): CS 1510 (810:051) or consent of instructor. Prerequisite(s) or corequisite(s): CS 1800 (810:080). (Fall, Spring)
CS 1800 (810:080). Discrete Structures — 3 hrs.
Introduction to logical forms, arguments, predicates, and quantified statements; methods of proof; elementary number theory; counting; sequences; sets; functions; relations; graphs; and Boolean algebra in the context of computer science. Prerequisite(s): CS 1130 (810:030), CS 1160 (810:036), or CS 1510 (810:051). (Fall, Spring)
CS 2100. Web Development: Server-side Coding — 3 hrs.
Development of interactive web sites: server-side scripting; database definition and use; site security; and additional topics as time allows. Prerequisite(s): CS 1100 (810:017) or consent of instructor.
CS 2134 (810:134). COBOL — 3 hrs.
Examination of the COBOL language; emphasis on data processing techniques and structured programming methods. Sequential and indexed files, file maintenance, sorting, report design, and multi-file processing. Concepts illustrated by business-like examples. Prerequisite(s): one of the following — MGMT 2032 (150:032), CS 1130 (810:030), CS 1160 (810:036), or CS 1510 (810:051). (Spring)
CS 2420 (810:142). Computer Architecture — 3 hrs.
Basic concepts of computer architecture with special focus on principles underlying contemporary uniprocessor design. Interaction of hardware and software, and consideration of efficient use of hardware to achieve high performance. Topics include instruction set design, processor design, pipelining, the memory hierarchy, design trade-offs, I/O systems, performance measurement, and multiprocessors. Prerequisite(s): CS 1410 (810:041). (Fall)
CS 2530 (810:053). Intermediate Computing — 3 hrs.
Intermediate software development in an object-oriented environment. Further experience with object-oriented analysis and design, including modeling languages. Focus on software reuse through frameworks and patterns and on software development methodology and tools. Prerequisite(s): CS 1510 (810:051); CS 1520 (810:052); CS 1800 (810:080). (Fall, Spring)
CS 2650 (810:165). Computational Biology I — 3 hrs.
Intermediate programming with emphasis on bioinformatics. Introduction to computational DNA and protein sequence analysis; genome rearrangements; restriction mapping; dynamic programming and optimal alignment algorithms; exploration of BLAST, FASTA, and gapped alignment. Prerequisite(s): CS 1160 (810:036) or CS 1510 (810:051); CS 1800 (810:080). (Fall)
CS 2720 (810:172). Software Engineering — 3 hrs.
Study of software life cycle models and their phases—planning, requirements, specifications, design, implementation, testing, and maintenance. Emphasis on tools, documentation, and applications. Prerequisite(s): CS 1520 (810:052); CS 1800 (810:080). (Fall, Spring)
CS 2880 (810:088). Topics in Computing — 3 hrs.
Topics from recent developments in computing appropriate to students with limited computer science background, often relating to relatively sophisticated or technical use of computing or recent developments in programming. May be repeated on different topic. (Variable)
CS 3120/5120 (810:112g). User Interface Design — 3 hrs.
Examination of the theory, design, programming, and evaluation of interactive application interfaces. Built around a large design and implementation project that is completed in groups. Topics include human capabilities and limitations, the interface design and engineering process, prototyping and interface construction, interface evaluation, and possibly topics such as data visualization and the World Wide Web. Prerequisite(s): for Computer Science majors: CS 2530 (810:053); plus one of the following - CS 3140/5140 (810:114g), CS 3150/5150 (810:115g), CS 3530 (810:153), CS 3540 (810:154), CS 2720 (810:172); junior standing. Prerequisite(s) for non-Computer Science majors: junior standing; consent of instructor. (Variable)
CS 3140/5140 (810:114g). Database Systems — 3 hrs.
Storage of, and access to, physical databases; data models, query languages, transaction processing, and recovery techniques; object-oriented and distributed database systems; and database design. Prerequisite(s): CS 1520 (810:052); CS 1800 (810:080); junior standing. (Fall)
CS 3150/5150 (810:115g). Information Storage and Retrieval — 3 hrs.
Natural language processing; analysis of textual material by statistical, syntactic, and logical methods; retrieval systems models, dictionary construction, query processing, file structures, content analysis; automatic retrieval systems and question-answering systems; and evaluation of retrieval effectiveness. Prerequisite(s): CS 1520 (810:052); CS 1800 (810:080); junior standing. (Spring)
CS 3179 (810:179). Cooperative Education — 1-4 hrs.
Application of classroom learning to field experience. Credit may not be applied to major or minor. Offered on credit/no credit basis only. (Fall, Spring)
CS 3430/5430 (810:143g). Operating Systems — 3 hrs.
History and evolution of operating systems; process and processor management; primary and auxiliary storage management; performance evaluation, security, and distributed systems issues; and case studies of modern operating systems. Prerequisite(s): CS 1410 (810:041); CS 1520 (810:052); CS 1800 (810:080); junior standing. (Spring)
CS 3470/5470 (810:147g). Networking — 3 hrs.
Network architectures and communication protocol standards. Topics include communication of digital data, data-link protocols, local-area networks, network-layer protocols, transport-layer protocols, applications, network security, and management. Prerequisite(s): CS 1410 (810:041); CS 1520 (810:052); CS 1800 (810:080); junior standing. Prerequistes for Department of Technology majors: TECH 1037 (330:037); TECH 2041 (330:041); TECH 2042 (330:042); CS 1160 (810:036). (Fall)
CS 3510 (810:151). Topics in Programming — 1 hr.
Quick study of a specified programming language or environment for those with considerable programming experience. Language syntax and semantics, common problems solved using it, and best practices. Prerequisite(s): CS 1520 (810:052); CS 1800 (810:080). (Spring)
CS 3530 (810:153). Design and Analysis of Algorithms — 3 hrs.
Algorithm design techniques such as dynamic programming and greedy algorithms; complexity analysis of algorithms; efficient algorithms for classical problems; intractable problems and techniques for addressing them; and algorithms for parallel machines. Prerequisite(s): CS 1520 (810:052); CS 1800 (810:080). (Variable)
CS 3540 (810:154). Programming Languages and Paradigms — 3 hrs.
Organization of programming languages; language design issues including syntax, data types, sequence control, and storage management; comparison of language features from object-oriented, imperative, functional, and logical paradigms. Prerequisite(s): CS 1520 (810:052); CS 1800 (810:080). (Variable)
CS 3610/5610 (810:161g). Artificial Intelligence — 3-4 hrs.
Models of intelligent behavior and problem solving; knowledge representation and search methods; learning; topics such as knowledge-based systems, language understanding, and vision; optional 1-hour lab to include exploration of one or more additional AI programming techniques such as robotics, symbolic programming, heuristic programming, etc. Prerequisite(s): CS 1520 (810:052); CS 1800 (810:080); junior standing. (Variable)
CS 3650/5650 (810:166g). Computational Biology II — 3 hrs.
Advanced bioinformatics computing: DNA sequencing and fragment assembly; gene expression arrays; clustering algorithms; evolutionary trees; multiple alignments: PSI-BLAST, CLUSTAL; graphical 3-D representation of proteins; Hidden Markov models. Prerequisite(s): CS 2650 (810:165); junior standing. (Spring)
CS 3730/5730 (810:173g). Project Management — 3 hrs.
Examination of problems of organizing, controlling, managing, and evaluating a software project; software metrics and human input. Prerequisite(s): CS 2530 (810:053); CS 2720 (810:172); junior standing. (Variable)
CS 3750/5750 (810:175g). Software Testing — 3 hrs.
Taxonomy of software defects, approaches to identifying software defects, and test case development. Unit testing, functional testing, and software inspection. Prerequisite(s): CS 1072 (810:071) or CS 2720 (810:172); junior standing. (Variable)
CS 3810/5810 (810:181g). Theory of Computation — 3 hrs.
Topics include regular languages and grammars; finite state automata; context-free languages and grammars; language recognition and parsing; and Turing computability and undecidability. Prerequisite(s): CS 1800 (810:080); junior standing. (Variable)
CS 4400/5400 (810:140g). System Administration — 3 hrs.
Major concepts and mechanisms associated with computer system administration. Focus on issues surrounding user management, the configuration of services, and the coordination of distributed resources. Prerequisite(s): CS 3470/5470 (810:147g); junior standing. (Variable)
CS 4410/5410 (810:141g). System Security — 3 hrs.
Topics include the need for security services, data integrity, network intrusion and monitoring, configuration of secure services, root kits, and buffer overflow techniques and remedies. Additional topics include enterprise-wide monitoring, honeypots, and recognizing trends in a networked environment. Prerequisite(s): CS 3470/5470 (810:147g); junior standing. (Variable)
CS 4550/5550 (810:155g). Translation of Programming Languages — 3 hrs.
Introduction to analysis of programming languages and construction of translators. Prerequisite(s): CS 2530 (810:053) and one of the following: CS 3530 (810:153), CS 3540 (810:154), CS 3810/5810 (810:181g); junior standing. (Variable)
CS 4620/5620 (810:162g). Intelligent Systems — 3 hrs.
Design and implementation of programs that apply artificial intelligence techniques to problems such as design, diagnosis, and distributed problem solving. Emphasis on team design and development of large systems. Prerequisite(s): CS 2530 (810:053); CS 3610/5610 (810:161g) or equivalent; junior standing. (Variable)
CS 4740/5740 (810:174g). Real-Time Embedded Systems — 4 hrs.
Specification, design, and implementation principles and techniques for real-time embedded systems. Topics include programming languages and paradigms, reliability and fault tolerance, concurrent programming, scheduling, and the interaction between hardware and software. Student teams will complete a significant real-time embedded software project. Prerequisite(s): CS 2530 (810:053); CS 2720 (810:172); junior standing. (Variable)
CS 4800 (810:180). Undergraduate Research in Computer Science — 1-3 hrs.
(Fall, Spring)
CS 4880/5880 (810:188g). Topics in Computer Science — 3 hrs.
Topics of general interest from any area of computer science, including systems, software, or theory. Prerequisite(s): CS 1520 (810:052); CS 1800 (810:080); junior standing. (Variable)
CS 6140 (810:214). Database Management Systems — 3 hrs.
Database system concepts, physical data organization, the network model and the DBTG Proposal, the hierarchical model, the relational model, relational query languages, design theory of relational databases, query optimization, and normalization. Prerequisite(s): consent of instructor. (Variable)
CS 6400 (810:240). Computer Systems — 3 hrs.
Survey of issues in computer system analysis and design. Emphasis on relationship between system hardware and software including tools and environments for software development on parallel and distributed computer systems. Prerequisite(s): for Computer Science majors: CS 2420 (810:142) or CS 3430/5430 (810:143g). Prerequisite(s) for non-Computer Science majors: proficiency in a high-level programming language; consent of instructor. (Variable)
CS 6500 (810:270). Algorithms — 3 hrs.
Survey of analysis and design of algorithms. Topics include algorithm design techniques, efficient algorithms for classical problems, and intractable problems and techniques for solving them. Prerequisite(s): CS 3530 (810:153). (Variable)
CS 6800 (810:280). Theoretical Foundations of Computing — 3 hrs.
Survey of theoretical models of computation and basic theory of computability. Topics include Turing machines, undecidability, NP-completeness, and computational complexity. Consideration of applications of theory to contemporary problems in computing. Prerequisite(s): CS 3810/5810 (810:181g). (Variable)
