Computer Science (CS)

CS 0101 Introduction to Computing3 Credits

This course introduces the concept of computing to students with no prior computer experience. The main ideas of computing are explored and students learn the most essential information about computers and technology in today's digital world and the latest computing trends and skills with live code exercises. Students will explore key ideas of coding at an introductory level. Topics include computer architecture, digital media, network, web, big data, computer security, and basic computer programming.

CS 0131 Fundamentals of Programming3 Credits

Attributes: BUEL Business Elective, ENPC Digital Journalism Production Component

This course introduces the object-oriented programming. Topics include data types, control structures, arrays, I/O, file handling, GUI, and the OOP concept of encapsulation, inheritance, polymorphism, packages, interfaces, and inner classes.

CS 0151 Functional Programming3 Credits

This course provides an introduction to the theory and practice of programming in the functional paradigm. Functional programming is based on a view of programs as data and computing as calculation. This approach facilitates the development of programs that are concise, elegant, and free of broad classes of errors. Topics covered will include a broad introduction to computing, symbolic representation of data, recursion, algebraic data types, higher-order functions and type systems. Students will complete the course with both the ability to program and a useful foundation for further study of topics in discrete math, logic, proof, and computer science theory. No prior programming experience is required.

CS 0221 Computer Organization and Assembler3 Credits

Prerequisite: CS 0142.

This course introduces computer organization using several levels of abstraction to represent a simple computer, starting with logic gates, progressing to assembly language, and ending with a high-level programming language. The course concludes with the design of an assembler/simulator for the model computer.

CS 0231 Programming Workshop3 Credits

Corequisite: CS 0231L or CS 0231P.

Prerequisite: CS 0131.

This course covers advanced programming concepts in one or more current programming languages, including syntax and theories. It prepares students for adapting to various programming environments and coding in an efficient manner. Lab work will accompany the course.

CS 0231L Programming Workshop Lab1 Credit

Corequisite: CS 0231.

This lab accompanies the Programming Workshop course for hands-on practice with course concepts.

CS 0231P Programming Workshop PLG0 Credits

Corequisite: CS 0231.

This peer learning group accompanies the Programming Workshop course for hands-on practice with course concepts.

CS 0232 Data Structures3 Credits

Corequisite: CS 0232L or CS 0232P.

Prerequisite: CS 0131.

This course covers abstract data structures such as queues, stacks, heaps, linked lists, trees, graphs, hash tables and sorting. Students apply data structure concept in advanced programming.

CS 0232L Data Structures Lab1 Credit

Corequisite: CS 0232.

This lab accompanies the Data Structures course for hands-on practice with course concepts.

CS 0232P Data Structures PLG0 Credits

Corequisite: CS 0232.

This peer learning group accompanies the Data Structures course for hands-on practice with course concepts.

CS 0250L Computer Science Sophomore Clinic1 Credit

Corequisite: SW 0304.

This sophomore clinic provides faculty guidance and supervision beyond the scope of existing courses. Students learn how to develop and structure their deliverables, as well as how to use computer science tools in the context of real-world or research projects.

CS 0252 Foundations for Software Construction3 Credits

Prerequisite: CS 0232.

This course focuses on the principles underlying construction of production-quality software systems and the ways in which these principles are realized in an object-oriented language. Students learn a component-based approach to the specification, implementation, and testing of software that facilitates reliability, collaborative work, and ease of modification. Topics include specification, abstract data types, unit testing, and design patterns, along with advanced programming constructs such as graphical user interfaces (GUI), threads, network programming, graphics, animation, and real-time techniques. Each student will complete a substantial project over the course of the semester.

CS 0322 Computer Architecture3 Credits

Prerequisite: CS 0221.

This course examines the theory of logic design including gates, timing diagrams, truth tables, design of basic arithmetic operations, and control mechanisms, as well as general properties of major hardware components (central processing unit, arithmetic-logic unit, memory, input/output devices) and communication between them (buses, interrupts). Surveys actual computer systems.

CS 0324 Microprocessors3 Credits

Prerequisite: CS 0221.

This course reviews conventional logic design using MSI building blocks: multiplexers, decoders, comparators, arithmetic-logic units, registers, and memory. It introduces microprocessor controllers, applying them to the design of several small projects such as a serial-parallel converter, a four-function calculator, and a traffic-light controller. Students design a process controller as a final project.

CS 0331 Operating Systems3 Credits

Prerequisite: CS 0232.

This course introduces the internal operation of modern operating systems. The topics cover a brief history of operating systems, the major components of modern operating systems, and the object-oriented methodology on UNIX-like platform. Various UNIX tools will be used in the course and participants study examples using object-oriented programs as well as large system integration by object-oriented methodology.

CS 0342 Theory of Computation3 Credits

Attributes: MAEL Math Major Elective Course

Prerequisite: MA 0231.

This course explores what computers can and can't do by examining simple mathematical models of computation. Topics include finite state machines, regular expressions, non-determinism, pushdown automata, context-free grammars, and Turing machines. We will see that there are limits to what computers can do, and in doing so, we will learn about what a computer really is; you may be surprised.

CS 0343 Analysis of Algorithms3 Credits

Prerequisite: CS 0232.

This course introduces various algorithms and analyzes the complexity and efficiency of the algorithms. Topics cover classic and heuristic algorithms, searching, sorting and parsing techniques, and algorithm complexity analysis.

CS 0353 Principles of Compiler Design3 Credits

Prerequisite: CS 0232.

This course examines the use of language theory and automata theory in the design of compilers and includes symbol table organization, lexical analysis, syntax analysis, and code generation; code generation versus interpretation; and storage management, optimization, and error handling. Students apply learned concepts to the development of a significant part of a compiler. This is the required capstone course for all majors in computer science.

CS 0354 Theory of Programming Languages3 Credits

Prerequisite: CS 0232.

Topics in this course include the design of programming languages; organization, control structures, data structures; run time behavior of programs; and formal specification and analysis of programming languages. The course includes a comparative survey of several significantly different languages.

CS 0355 Artificial Intelligence3 Credits

Prerequisite: CS 0232.

This course, which examines computer implementation of processes of thought, includes knowledge representation, games, theorem proving, heuristics, symbolic techniques, neural networks, genetic algorithms, and artificial life.

CS 0391 Cognitive Science Seminar3 Credits

Prerequisite: CS 0131 or CS 0141.

In this course, students explore the intersection of computation and such diverse fields as psychology, neuroscience, philosophy, and linguistics in searching for an understanding of cognition, be it real or abstract, human, animal, or machine. How does the mind work? How do we acquire knowledge, represent that knowledge, and manipulate those representations? Can a computer be conscious? Are animals intelligent?

CS 0397 Internship1-3 Credits

The internship program provides computer science majors with an opportunity to gain practical, career-related experience in a variety of supervised field settings. Internships can be in any one of a number of areas, such as software applications or hardware applications. Interns spend a minimum of 10 hours per week in on-site work, complete a required academic component specified by a faculty advisor, and satisfy the University Internship Policy requirements. Students may register for internships during the summer session and/or one to two full semesters and may earn a maximum of six internship credits. Open to seniors only; requires approval of the field placement supervisor and the School of Engineering. An internship may not replace a computer science elective to fulfill the requirement for a major in computer science.

CS 0398 Internship1-3 Credits

The internship program provides computer science majors with an opportunity to gain practical, career-related experience in a variety of supervised field settings. Internships can be in any one of a number of areas, such as software applications or hardware applications. Interns spend a minimum of 10 hours per week in on-site work, complete a required academic component specified by a faculty advisor, and satisfy the University Internship Policy requirements. Students may register for internships during the summer session and/or one to two full semesters and may earn a maximum of six internship credits. Open to seniors only; requires approval of the field placement supervisor and the School of Engineering. An internship may not replace a computer science elective to fulfill the requirement for a major in computer science.