College of Liberal Arts and Sciences
Computer Science & Software Engineering

Computer Science Courses

Course Descriptions

Division 5 Core Classes

  • CS 142 - Introduction to Computer Science and Programming

    An introduction to programming in a high-level language (assignment, data types, expressions, selection, loops, functions, arrays) including parallel programming for supercomputers. Topics such as AI, software engineering, and databases, are also discussed. Prerequisite: MA101, or equivalent. (U)(3)

  • CS 151 - Foundations of Computer Science

    Introduction to mathematical problem solving, with emphasis on techniques for designing computer-based solutions. Concepts include problem-solving principles, logic, proof techniques, sets, sequences, functions, relations, and inductive and recursive thinking. Prerequisites: MA 101 or 102 or equivalent. (U)(3)

Writing Intensive Courses

  • SE 361 - Object-Oriented Design

    This course uses the Unified Modeling Language (UML) as a vehicle to introduce the basic principles of object-oriented methodology and design, covering classes, objects, data abstraction, polymorphism, information hiding and relationships among classes such as inheritance, association, aggregation and composition. Specific design techniques are covered for object-oriented programming languages such as Java and C++. The course also provides a first exposure to the software development lifecycle of object-oriented software applications. A small team design project is required. Prerequisite: CS 248. (U)(3)

  • SE 461 - Managing Software Development

    Techniques, principles, and processes for developing large, complex software systems: Systems analysis and specification, modeling, design patterns, implementation, validation and verification, quality assurance and project management. A team-based software project is required. Prerequisite: SE361. (U-G)(3)

  • CS 485 - Computer Ethics

    Ethical and social issues in computing with emphasis on professional responsibilities, risks and liabilities, and intellectual property. Prerequisite: CS 142 and sophomore standing. (U-G)(1)

Departmental Honor Courses

  • CS 490

    An introduction to research methodology in computer science, including an overview of computer science literature and techniques for presenting and evaluating research results. Prerequisites: CS321, CS351, and SE361, or junior standing and permission of the department. (U)(2)

  • CS 282

  • CS 382

  • CS 482

100-Level Courses

  • CS 101

  • CS 142 - Introduction to Computer Science and Programming

    An introduction to programming in a high-level language (assignment, data types, expressions, selection, loops, functions, arrays) including parallel programming for supercomputers. Topics such as AI, software engineering, and databases, are also discussed. Prerequisite: MA101, or equivalent. (U)(3)

  • CS 151 - Foundations of Computer Science

    Introduction to mathematical problem solving, with emphasis on techniques for designing computer-based solutions. Concepts include problem-solving principles, logic, proof techniques, sets, sequences, functions, relations, and inductive and recursive thinking. Prerequisites: MA 101 or 102 or equivalent. (U)(3)

200-Level Courses

  • CS 245

  • CS 248 - Object-Oriented Programming and Data Structures

    This course is an introduction to object-oriented programming using Java. Topics include algorithm analysis, recursion, the stack, queue, tree, and heap data structures, sorting algorithms, and GUI programming. A brief survey of computer science is also included: history, software engineering, computer organization, operating systems, networks, programming languages, databases, artificial intelligence, and theory. Prerequisites: CS 142 or equivalent and CS 151. (U)(5)

  • CS 252 - Foundations of Computing 2

    As a continuation of CS151, concepts include mathematical logic, formal grammars, algebraic structures, finite state machines and automata, graph theory, and combinatorics. Prerequisite: CS151 (U) (3)

  • CS 273

    In-depth study of special topics not covered in regular courses. (U)(3)

  • CS 282

300-Level Courses

  • CS 300 - Teaching Practicum

    Students assist a faculty member teaching a 100 or 200 level CS course by helping students with assignments and laboratory exercises, conducting help sessions, preparing course materials and setting up laboratory exercises. The student receives regularly scheduled supervision from the faculty instructor. May be repeated once for credit. (U)(3)

  • CS 308 - Problem Seminar

    A survey of basic problem-solving strategies such as recursion, divide and conquer, and backtracking and applying these strategies to sample problems in mathematics, text processing, graphics and games. Consolidates material from CS 242 and CS 243. Prerequisite: CS 248 or permission of the instructor. (U) (1)

  • CS 321 - Computer Organization

    Principles of computer architecture are introduced from a layered point of view, beginning at the level of gates and digital logic, and progressing through micro-programming, the machine language execution cycle, addressing modes, symbolic assembly language, and the fundamentals of operating systems. Advanced topics including pipelined and parallel architectures are also covered. Corequisite: CS 248. (U) (3)

  • CS 351 - Algorithms

    A systematic study of data structures and algorithms with an introduction to theoretical computer science. Topics include lists, stacks, queues, trees, and graph structure, searching and sorting algorithms, mathematical algorithms, time and space complexity, an introduction to the theory of NP-completeness, and an introduction to computability theory. Prerequisite: 248. (U)(3)

  • SE 361 - Object-Oriented Design

    This course uses the Unified Modeling Language (UML) as a vehicle to introduce the basic principles of object-oriented methodology and design, covering classes, objects, data abstraction, polymorphism, information hiding and relationships among classes such as inheritance, association, aggregation and composition. Specific design techniques are covered for object-oriented programming languages such as Java and C++. The course also provides a first exposure to the software development lifecycle of object-oriented software applications. A small team design project is required. Prerequisite: CS 248. (U)(3)

  • CS 382

400-Level Courses

  • CS 403 - Independent Study

    Provides an opportunity for qualified students to pursue special topics under the guidance of a department staff member. Prerequisite: permission of the department. (U-G)(3)

  • CS 411 - Internship

    Supervised work experience directly related to major area of study. Prerequisites: junior or senior standing and permission of department. (U)(3)

  • SE 411 - Internship

    Supervised work experience in software engineering. Prerequisites: SE361, SE461, CS485, and one of SE462 orCS382 or CS383. (U)

  • CS 431

    Introduces the major concept areas of operating systems principles, including the study of process, storage, and processor management; performance issues; distributed systems; and protection and security. Prerequisites: CS 248, CS 252, and CS 321. (U-G) (3)

  • CS 433 - Database Systems

    An introduction to the theory, design and use of modern database management systems. Topics include the relational, entity-relationship, and object-oriented data models, query languages such as SQL, file systems, concurrency and deadlock, reliability, security, and query optimization. Prerequisites: CS 248, CS 252, and CS 321. (U-G) (3)

  • CS 435 - Computer Networks

    An introduction to computer networks from a layered point of view beginning with the physical and data link layers, and progressing through the medium access layer, the network layer, the transport layer, and the applications layer. Specific content includes Ethernet, TCP/IP, and the Web. Students will write client/server programs that communicate across a network. Prerequisite: CS 321. (U-G) (3)

  • CS 441 - Organization of Programming Languages

    Emphasizes the principles and programming paradigms that govern the design and implementation of contemporary programming languages. Includes the study of language syntax, processors, representations, and paradigms. Prerequisites: CS 252, CS 321, and SE 361. (U-G) (3)

  • CS 451

    Basic theoretical principles of computer science that are embodied in formal languages, automata, computability and computational complexity. Includes regular expressions, context-free grammars, Turing machines, Church's thesis, and unsolvability. Prerequisites: CS 252, CS 321 and CS 351. (U-G)(3)

  • CS 455

    Solutions of equations and systems, error analysis, numerical differentiation and integration, interpolation, least squares approximation, numerical solution of ordinary differential equations. Prerequisites: MA 107 and CS 142 or equivalent. (U/G)(3)

  • SE 461 - Managing Software Development

    Techniques, principles, and processes for developing large, complex software systems: Systems analysis and specification, modeling, design patterns, implementation, validation and verification, quality assurance and project management. A team-based software project is required. Prerequisite: SE361. (U-G)(3)

  • SE 462 - Modernizing Legacy Software

    Fundamental concepts, principles, techniques and tools for the maintenance and evolution of legacy software systems. Software maintenance and evolution process models, reengineering, reverse engineering, and program comprehension tools. A modernization project is required. Prerequisite: SE361. (U-G)(3)

  • CS 473 - Topics in Computer Science: Advanced User Interfaces

    In-depth study of special topics not covered in regular courses. Prerequisite: permission of department. (U-G) (3)

  • SE 473

    In-depth study of special topics not covered in regular courses. Prerequisite: Permission of the department. (U-G)

  • CS 482

  • CS 485 - Computer Ethics

    Ethical and social issues in computing with emphasis on professional responsibilities, risks and liabilities, and intellectual property. Prerequisite: CS 142 and sophomore standing. (U-G)(1)

  • CS 490

    An introduction to research methodology in computer science, including an overview of computer science literature and techniques for presenting and evaluating research results. Prerequisites: CS321, CS351, and SE361, or junior standing and permission of the department. (U)(2)

  • CS 491

    Techniques for giving oral presentations of research results in computer science. Prerequisite: CS490 or permission of the department. (U)(1)

  • CS 499 - Honors Thesis

    (U)(3)

Software Engineering Courses

  • SE 361 - Object-Oriented Design

    This course uses the Unified Modeling Language (UML) as a vehicle to introduce the basic principles of object-oriented methodology and design, covering classes, objects, data abstraction, polymorphism, information hiding and relationships among classes such as inheritance, association, aggregation and composition. Specific design techniques are covered for object-oriented programming languages such as Java and C++. The course also provides a first exposure to the software development lifecycle of object-oriented software applications. A small team design project is required. Prerequisite: CS 248. (U)(3)

  • SE 461 - Managing Software Development

    Techniques, principles, and processes for developing large, complex software systems: Systems analysis and specification, modeling, design patterns, implementation, validation and verification, quality assurance and project management. A team-based software project is required. Prerequisite: SE361. (U-G)(3)

  • SE 462 - Modernizing Legacy Software

    Fundamental concepts, principles, techniques and tools for the maintenance and evolution of legacy software systems. Software maintenance and evolution process models, reengineering, reverse engineering, and program comprehension tools. A modernization project is required. Prerequisite: SE361. (U-G)(3)

  • SE 473

    In-depth study of special topics not covered in regular courses. Prerequisite: Permission of the department. (U-G)

  • SE 411 - Internship

    Supervised work experience in software engineering. Prerequisites: SE361, SE461, CS485, and one of SE462 orCS382 or CS383. (U)