BS Core Requirements

CS Content Area Descriptions

Computer Programming Fundamentals

  • CS 152L Computer Programming Fundamentals (3)

  • CS 251L Intermediate Programming (3)

  • CS 351L Design of Large Programs (4)

The sequence CS 152L, 251L, 351L involves a comprehensive study of the fundamentals of computer programming. The language Java will be mastered and techniques and ideas of algorithmic program design, recursion, programmer team organization, structured programming, correctness, program specification, program testing, maintenance and modification and the use and implementation of various data structures and files will be covered. CS 152 and CS 251 are taught only in Java.

  • CS 259L Data Structures with Java (5)

CS 259L is an accelerated course designed for potential CS students with some programming experience or education. It involves the same material as the normal undergraduate sequence CS 152L, 251L. It requires a minimum of one-year experience or instruction in a high level programming language and associated methodology.

Data Organization

  • CS241 Data Organization (3)

  • CS341 Introduction to Computing Systems (3)

The sequence CS 241, 341 introduces students to the memory organization of data storage, computer architecture and design, and assembly language programming. CS 241 is taught only in C.

Computer Design

  • ECE 238L Computer Logic Design (4)

Students are provided with basic hardware literacy through EECE 238L, and the study of computer architecture included in CS 341L and CS 481.

Algorithms and Data Structures Design

  • CS 261 Mathematical Foundations of Computer Science (3)

  • CS 361L Data Structures and Algorithms I (3)

  • CS 362 Data Structures and Algorithms II (3)

The sequence CS 261,361L introduces the student to data structures and algorithms and the mathematics needed to analyze their time and space complexity. Topics include O( ) notation, recurrence relations and their solution, sorting, hash tables, priority queues, search trees (including, at least, one balanced tree structure), and basic graph representation and search. CS 362 introduces sophisticated data structures, algorithms that use them, and techniques for analyzing their performance.

Ethics

  • CS 293 Social and Ethical Issues in Computing (1)

CS 293 gives an overview of philosophical ethics, privacy and databases, intellectual property, computer security, computer crime, safety and reliability, professional responsibility and codes, electronic communities and the internet, and social impact of computers.

Programming Languages

  • CS 357L Declarative Programming (3)

CS 357L Declarative Programming (3) provides an examination of several classes of programming languages.

Scientific Computing

  • CS 375 Introduction to Numerical Computing (3)

CS375 introduces students to foundational algorithms important to scientific computing.

Software Systems Design

  • CS 460 Software Engineering (3)

  • CS 481 Operating Systems Principles (3)

CS 460 is a capstone design course involving a large team-oriented programming project.  CS 481 introduces the student to the principles of operating systems and provides further instruction on computer architecture.

Technical Electives

Technical electives taken from a wide variety of courses permit the student to specialize (numerical analysis, operations research, artificial intelligence, architecture and systems, etc.) or to acquire additional breadth.