Computer Science

Skip Sub Menu


The course presents a broad overview of Computer Science to provide students with an appreciation for and an understanding of the many different aspects of Computer Science. A comprehensive and rigorous exploration of computing is undertaken to lay a solid foundation to support further study. No background in Computer Science is assumed. The course is intended for both students who expect to major or minor in Computer Science as well as for those not planning on taking additional course work.

An introduction to the field of computer science is provided emphasizing problem solving using a high-level programming language. Algorithms, basic data representation, language control structures, debugging, and program verification will be discussed. Objects will be introduced, used, and created. Prereq.: Four years of high school mathematics or MATH 020.

This course extends the work of CS 065. This object of the course is to understand data abstraction in computer science and to learn how to implement user-defined data types in an object-oriented language. Sorting, searching and tree traversal algorithms are used and analyzed. Preparation for further study in computer science. Prereq.: CS 065 or equivalent.

This course introduces students to object-oriented programming (OOP). Students will learn OOP concepts such as classes, objects, encapsulation, messaging, data hiding, inheritance, and polymorphism. Generic programming and OOP design patterns will also be taught. Students will encounter advanced programming projects where unit testing and exception handling will be stressed. Other topics include serialization and GUI construction. Prereq.: CS 066.

CS 083: COMPUTER ETHICS, 3 credit hrs.
This course examines the ethical and social issues arising from advances in computer technology, and the responsibility that computer professionals and users have with regards to computer use. The course will serve to increase understanding of issues related to ethics, professional conduct and social responsibility as they arise in the field of computer science. Students will be exposed to the history of the discipline from a social point of view, and to various frameworks from which ethical and professional decisions must be made within the discipline. Additionally, the course serves to develop 1) the ability to think clearly; 2) habits of professional responsibility and behavior; and 3) effective writing and presentation skills. Prereq .: Sophomore, junior, or senior standing required.

CS 099: INDEPENDENT STUDY, 1-3 credit hrs.
Directed individual study in areas related to the student's needs or interests. Prereq.: Consent of department.

CS 114: SYMBOLIC LOGIC (cross-listed with PHIL 114), 3 credit hrs.
Study of the concepts and techniques of modern formal logic, including axiomatic developments of the sentential calculus and an examination of the first-order predicate calculus in a system of natural deduction.

CS 116: BIOINFORMATICS (cross-listed with BIO 116), 3 credit hrs.
The analysis of biological systems through the use of computational methods. Analyzing these systems often involves creating electronic databases of biological structures (protein sequences, genomes, DNA, etc.) and developing algorithms to analyze the data. Prereq.: CS 065 or consent of instructor.

This course provides an introduction to and overview of the field of human-computer interaction (HCI). HCI is an interdisciplinary field that integrates theories and methodologies from computer science, psychology, design, and engineering, with the aim of building useful, engaging, and usable interfaces. This course covers a rich set of HCI methods and tools, both from a theoretical and practical point of view, in use by today’s HCI professionals for designing and improving technologies.  Prereq.: CS 065.

Computer organization and architecture; internal representation of programs and data; assembly language programming; addressing techniques; macros; assemblers; linking; input/output concepts. Prereq.: CS 066 or equivalent.

CS 135: PROGRAMMING LANGUAGES, 3 credit hrs.
Principles of programming languages are studied from the perspectives of design and implementation. Syntactic and semantic features are examined in a variety of languages. Run-time structures for handling both data and control structures are introduced. The course concentrates on imperative and object-oriented paradigms, but also covers functional and logic languages. Prereq.: CS 066.

CS 137: ALGORITHM ANALYSIS, 3 credit hrs.
Formal and informal methods for analyzing the correctness and efficiency of algorithms. Implementation and analysis of advanced algorithms and data structures such as AVL trees, B-trees, hash-tables, heaps, and graph algorithms. Introduction to complexity theory and NP-Completeness. Prereq.: CS 66 and (MATH 054 or MATH 101).

CS 139: THEORY OF COMPUTATION, 3 credit hrs.
Theoretical foundations of computing. Introduction to formal grammars, languages and automata theory. Mathematical analysis of the fundamental power and limitations of computing devices. Applications to pattern matching, problem specification, programming languages and compilers. Prereq.: CS 65 and (MATH 54 or MATH 101).

CS 140: COOPERATIVE EDUCATION, 1-3 credit hrs.
Students who are in a work environment related to the major field of study may receive credit for applications of classroom knowledge to their job. The student meets regularly with the adviser to determine appropriate assignments. May be repeated up to a maximum of eight hours of credit. (Graded on a credit/no credit basis.) Prereq.: At least junior standing or consent of instructor.

Introduction to the theory, tools and methods of artificial intelligence. Topics include knowledge representation, predicate calculus, basic data structures, and problem solving strategies. A symbol manipulation language is used. Computer science aspects of artificial intelligence are emphasized. Applications from areas such as natural language understanding, vision or expert systems are examined. Prereq.: CS 066.

Building upon prior computer science coursework and teaching experiences, the aim of this course is to prepare teachers to teach middle and high school computer science courses. Course content will emphasize standards-based instruction in alignment with the Computer Science Teachers Association K-12 Standards both in terms of content taught and the development of practices.

The structure of the course is based on class activities and discussions with significant preparation required outside of class. Teachers will be assigned reading, writing, and project-based tasks focused on eliciting student thinking, implementation of research-based instructional practices, selection and adaptation of curricular materials, and assessment for learning strategies.

Practical experience in state-of-the-art techniques for object-oriented software development, especially the use of "Unified Modeling Language (UML)." UML is now the de facto standard for expressing the intricate static and dynamic details of today's complex software products. The course focuses on learning to develop highly organized and maintainable programs, and on using UML and "Design Patterns" as a means for expressing their features and guiding their design. Team work is also stressed. Prereq.: CS 066

CS 147: COMPUTER GRAPHICS, 3 credit hrs.
Introduction to the drawing methods, geometrical transforms, and illumination models that are fundamental to computer graphics programming. The course is designed to be hands on in which students will implement several of the algorithms discussed in class using C/C++ and the OpenGL toolkit. Prereq.: CS 066.

CS 150: DISCRETE STRUCTURES (cross-listed with MATH 150), 3 credit hrs.
Foundations of discrete mathematics and the problems that can be solved using finite processes and sets of elements that can be listed. Topics covered will include algorithms, graph theory, and combinatorics. Prereq.: CS 065 and MATH 101.

CS 160: OPERATING SYSTEMS, 3 credit hrs.
Introduction to the design, development and implementation of operating systems. Problems of resource allocation, concurrency, file system design, networking and the interface between hardware and software. Examination of actual operating system source code. Prereq.: CS 130.

CS 161: COMPILER CONSTRUCTION, 3 credit hrs.
This course provides an understanding of the various phases of the programming language translation process. Compiler principles and tools are examined, and applied to the development and implementation of a working language processor. Various parsing techniques are compared. Prereq.: CS 066.

CS 165: INTRODUCTION TO NUMERICAL ANALYSIS (cross-listed with MATH 165), 3 credit hrs.
A practical introduction to numerical computing. The primary focus is the concepts and tools involved in modeling real continuous mathematical or engineering problems on the digital computer. The effects of using floating point arithmetic, error analysis, iterative methods for solving equations, and numerical integration and differentiation will be studied. Prereq.: CS 065, MATH 080 and 100.

CS 167: MACHINE LEARNING, 3 credit hrs.
Introduction to foundational and contemporary machine learning algorithms for classification, estimation, and clustering. Specific topics will vary but may include artificial neural networks, decision trees, instance-based learning, Bayesian learning, support vector machines, hidden Markov models, text categorization, and k-means clustering. Modern machine learning software and programming libraries will be utilized. Prereq: CS 065 and (CS 066 or STAT 040).

Exploration of how computers are constructed. Topics include the components of modern computer organization: the set of instructions, processor design and layout, clock speed, pipelining, access to cache, and virtual memory. Each one of these components will be studied in depth, in addition to basic digital circuits and combinational logic, with a focus on the decisions the must be made in order to develop an efficient computer. Prereq.: CS 130.

This course will focus on how large amounts of data are stored, accessed, and ultimately analyzed. Cloud concepts, capabilities, and computing models will be explored and will include hands-on experiences with tools for working with large-scale distributed file systems (e.g., Hadoop). Students will also develop skills working with relational databases (e.g., SQL) and unstructured databases (e.g., no SQL). This course is designed to complement rather than overlap the existing course Database Management – IS 160. Prereq: CS 066.

CS 188: SOFTWARE ENGINEERING, 3 credit hrs.
This course provides an in-depth study of the design and development of software. The life cycle of software, various development strategies, requirements analysis, design tools, and testing methodologies will be covered. These concepts will be explored in theory as well as in practice; students will gain experience in conceiving, specifying, designing, developing and implementing a reasonably sized software solution alongside a team of students from computer science. Prereq: CS 066.

In this course, students will apply descriptive, predictive, and prescriptive data analysis methods learned in previous courses to new cases. Students will learn to effectively manage long-term data analysis projects within diverse teams through a complete data analytics project lifecycle and compellingly communicate outcomes through writing and oral presentations which include appropriate use of data visualizations. Credits: 3. Pre-requisites: (1) CS 066, (2) STAT/MATH 130 or ACTS/MATH 131, and (3) two of STAT 170, STAT 172, CS 167, CS 178. 

The purpose of a capstone is for students to undertake an independent project that applies and synthesizes what they have learned in their major. This course is typically taken in one of the student's final two semesters at Drake. One outcome will be a written project that can take several forms, for example a research paper, a software package, or lesson plans. A second outcome is a presentation of their work to the students and faculty of the department, usually during the last two weeks of the semester.

CS 195: TOPICS IN COMPUTER SCIENCE, 1-4 credit hrs.
Seminars in selected topics. Prereq.: Consent of instructor.

CS 199: INDEPENDENT STUDY, 1-3 credit hrs.
Directed individual study in areas related to the student's needs or interests. Prereq.: Consent of department.

A&S News