Undergrad Courses

CS 105 CCTS: Problem Solving with Computational Thinking:

Using the Field of all Possibilities as the Source for All Solutions This course focuses on teaching students the higher order (critical) thinking skills needed in computer science (analysis, evaluation, logic and reasoning). The course starts by explaining how computers work, and then focuses on having students read and write pseudo code as an easy way to introduce programming concepts such as variable, selection, repetition, and arrays without having to worry too much about syntax. During the course we will also read and discuss articles on current issues in the study of computer science. We will finish with a programming project in a simple programming language. (4 credits) Prerequisite: STC 108, taken during students’ first semester, or consent of the department faculty.

CS 201 Procedural Programming: The Language of Computing — Expressing the Intelligence that Guides Computation: –

This course introduces the fundamental concepts related to computer programming, preparing students with the skills to write basic computer programs, and the knowledge to understand basic programs written by others. Topics include: built-in data types, flow control using conditionals and loops, arrays, console I/O, recursion, using libraries, and using classes to create their own data types. (4 credits) Prerequisite: MATH 162.

CS 203 Object Oriented Programming: Greater Knowledge and Expression in Programming Languages

This course covers programming in Java, specifically focusing on object-oriented concepts and creating GUI applications. Topics include: classes and objects, primitives and references, inheritance and polymorphism, interfaces and abstract classes, exception handling, GUI programming in Swing, and serialization and file I/O. (4 credits) Prerequisite: CS 201

 CS 221 Data Structures: Fundamental Structures of Information at the Basis of All Computation

Students use computer programming laboratory problems to apply the principles of data structure organization in a practical environment and develop advanced programming skills. The organizing power of knowledge is found to be the source of order in computer data structures. Topics include: abstract data types, internal representation of data, stacks, queues, linked lists, hash maps, binary trees, heaps, red-black trees, 3-4 trees and B trees. (4 credits) Prerequisites: MATH 162 and CS 203 2016/17 119.

CS 272 Discrete Structures: Models and Mathematics of the Structures of Natural Law at the Basis of Computation.

Discrete mathematics is becoming increasingly important because of its wide applicability in computer science, as well as in management and the other sciences. Two key processes in discrete mathematics studied in this course are algorithmic problem solving and recursion. Topics include: logic and sets, graph theory, and difference equations. (Same as MATH 272) (4 credits) Prerequisite: MATH 162.

CS 310 Systems Programming: Connecting Hardware and Software — The Most Fundamental Level of Software in the Operating System.

Students learn the systems programs that link the outer activity of high-level programming languages with the internal activity of the computer hardware. Knowledge of this deeper level of systems programs gives a greater range of possibilities to the programmer. Students learn system software such as compilers, linkers, loaders, and debuggers, and the structure and functions of an operating system including device management, process management, system calls, and memory management. (4 credits) Prerequisites: CS 221 and CS 272 / MATH 272.

 CS 321 Introduction to Algorithms: Focusing on Cause and Effect

Students are introduced to the study algorithms. Topics include: searching and sorting algorithms, computing time of programs and representations and algorithms for graphs. This course also includes a significant research paper around the efficiencies and running times of different algorithms (4 credits) Prerequisite: CS 221 and WTG 192

CS 350 Programming Languages: The Abstractions at the Basis of Programming Languages — Gaining Mastery Over All Programming Languages

This course involves substantial programming exercises that give students practical experience with several different programming language paradigms. Topics include: syntax and semantics of programming languages; data types and structures; control flow including blocks, subroutines, and recursion; implementation methods for semantic features; and comparison of several programming languages. (4 credits) Prerequisite: CS 221

 CS 363 Computer Organization and Architecture: The Physiology at the Basis of All Computers — The Logical and Physical Structures of Digital Computation

This course presents the internal structure of a computer, an introduction to assembly language, and the design of digital logic circuits and their use in structuring the various functional components of a computer, such as the memory and central processing unit. Topics include: machine organization, logic gates, circuits, machine language, assembly 2016/17 120 language, memory, I/O systems, and how these all combine to create typical and atypical architectures. (4 credits) Prerequisites: CS 201 and CS 272 / MATH 272.

CS 390 Fundamental Programming Practices: Modern Programming Methods and Systems –– Capture the Fundamental Principles of Knowledge for Greater Success in All Areas.

This course provides a focused program for enhancing programming and analytical skills in five areas: problem solving, data structures, object-oriented programming, the Java programming language, and the use of recursion in Java programs. These topics are of particular importance as a prerequisite for the courses in the graduate program in Computer Science. Topics include: elements of Java programming, object-oriented design and implementation, data structures (including lists, stacks, queues, binary search trees, hash tables, and sets), the exception hierarchy, file i/o and streams, and JDBC. (4 credits) Prerequisite: CS 220.


CS 398 Computer Programming Internship: Knowledge and Experience for Maximum Growth

This course offers practical, professional experience in computer programming. Students apply classroom knowledge to an industrial or University project. During the internship, students submit detailed reports of their computer programming activities. (2 credits) Prerequisites: consent of the Department faculty and the Academic Standards Committee.