Course Descriptions -- 2016-2017

For older courses, see the 2014-2016 course descriptions.

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. (Offered Fall and 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 or equivalent. (Offered 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 or any one-semester programming course. (Offered Spring)

CS 1025 (810:025). Modern Tools for Exploring Data -- 3 hrs.
Explores use of computational tools to explore data sets, find patterns, and solve complex problems. Topics include representing problems, modeling data, simulating processes, and validating models, with applications in the sciences, social sciences, humanities, and business. (Offered Fall and 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. (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. (Offered 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. (Offered 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. (Offered Fall and 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. (Offered Fall)

CS 1150. Programming Environments for Elementary Education -- 2 hrs.
Introduction to computational thinking and computer programming. Taught as a survey of programming environments used by elementary education teachers. Topics include structure of programming and the study of several programming environments used by students at a variety of age/ability levels. Lecture/discussion, 1 period; lab, 2 periods. Prerequisite(s): Level One Field Experience. (Offered Fall and Spring)

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. (Offered Fall and Spring)

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. (Offered Fall and 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. (Offered Fall and 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 or department approval. Prerequisite(s) or corequisite(s): CS 1800 or department approval. (Offered Fall and 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, CS 1160, or CS 1510. (Offered Fall and 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. (Variable)

CS 2420 (810:142). Computer Architecture and Parallel Programming -- 3 hrs.
Computer architecture of uniprocessor and multiprocessor systems with an emphasis on parallel programming to achieve high performance. Topics include processor design (pipelining and superscalar), memory hierarchy, interconnection networks, performance metrics, parallel program design, and parallel programming tools for multi-core systems, clusters, and graphics processing units. Prerequisite(s): CS 1410. (Offered 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 1520; CS 1800 or department approval. (Offered Fall and Spring)

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; CS 1800. (Offered 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 3110. Web Application Development -- 3 hrs.
Development of web applications such as content management systems. Involves HTML and CSS coding, client- and server-side scripting, the creation and manipulation of databases to generate web pages, and secure authentication of users. Prerequisite(s): CS 1520; CS 1100 or COMM 2555. (Offered Spring)

CS 3120/5120 (810:112g). User Interface Design -- 3 hrs.
Examination of the theory, design, programming, and evaluation of interactive application interfaces. 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 1520; CS 1800; junior standing. Prerequisite(s) for non-Computer Science majors: junior standing; department approval. (Offered Fall)

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; CS 1800; junior standing. (Offered 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; CS 1800; junior standing. (Offered 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. May be retaken for up to six credits total. (Offered Fall and 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; CS 1520; CS 1800; junior standing. (Offered 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; CS 1520; CS 1800; junior standing. Prerequisite(s) for Technology majors: TECH 1037; TECH 2041; TECH 2042; CS 1160. (Offered 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; CS 1800. (Variable)

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; CS 1800. (Offered Fall)

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; CS 1800. (Offered Spring)

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; CS 1800; junior standing. (Offered Fall)

CS 3650/5650 (810:166g). Computational Biology -- 3 hrs.
Applications of computer science techniques to biological problems; introduction to computational DNA and protein sequence analysis; dynamic programming; optimal alignment algorithms; DNA sequencing and fragment assembly; gene expression arrays; clustering algorithms; evolutionary trees; multiple alignments; Hidden Markov models. Prerequisite(s): CS 1520; CS 1800; junior standing. (Offered Spring)

CS 3730/5730 (810:173g). Project Management -- 1 hr.
Examination of problems of organizing, controlling, managing, and evaluating a software project; software metrics and human input. Prerequisite(s): CS 2530; junior standing. (Offered Fall and Spring)

CS 3750/5750 (810:175g). Software Verification and Validation -- 3 hrs.
Taxonomy of software defects and approaches to identifying them, including black box testing, functional testing, control flow testing, data flow testing, software inspection. Introduction to use of static analysisin development of high integrity software. Prerequisite(s): CS 2720; junior standing. (Offered Spring)

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; junior standing. (Offered Spring)

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; junior standing. (Offered Spring)

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; junior standing. (Offered Fall)

CS 4420. Applied Systems Forensics -- 3 hrs.
Essentials of applied computer system forensics; evidence preserving techniques; reconstruction of storage volumes and deleted volumes and files; identification of evidence in computer memory; encryption; log analysis; generation of forensic reports. Topics are covered in the context of incidence response to compromised systems. Prerequisite(s): CS 1410; CS 1520; CS 1800; CS 3430. (Offered TBD)

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 and one of the following: CS 3530, CS 3540, CS 3810; junior standing. Prerequisite(s) or corequisite(s): CS 3730. (Offered Fall)

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; CS 3610 or equivalent; junior standing. Prerequisite(s) or corequisite(s): CS 3730. (Offered Spring)

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; CS 2720; junior standing. Prerequisite(s) or corequisite(s): CS 3730. (Offered Fall)

CS 4800 (810:180). Undergraduate Research in Computer Science -- 1-3 hrs.
(Offered Fall and 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. Can be counted in any specialization area, with departmental approval for individual topics. Prerequisite(s): CS 1520; CS 1800; 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 or CS 3430. 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. (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. (Variable)


About Us

Undergraduate Programs



Courses and Registration

Schedule of Courses

Course Flow Chart

Course Descriptions

Projected Offerings

Textbook List

Student Life

For Prospective Students

Other Resources

Department of
Computer Science
305 ITTC
(the old East Gym)
Cedar Falls, Iowa
ph. (319) 273-2618
fax (319) 273-7123

UNI CS on Facebook UNI CS on Twitter

University of Northern Iowa

Diversity Matters


Paul Gray

With distributed computing, the devil is in the details. That's because a programmer is dealing with all sorts of different hardware and networks. Meshing all of these elements presents a significant challenge that Paul Gray, associate professor of computer science, is leading the charge to solve... [more]

More Profiles


bootable cluster project


realtime systems lab


More Projects

Department of Computer Science