Computer Science

Associate Professor Takako Soma

The Department of Computer Science offers both a major and minor in Computer Science. The primary focus of the major in Computer Science is for students to learn a solid practical foundation in software development (algorithm development and programming). Students also learn the fundamentals of theory and hardware, and how both relate to software. Students further have the opportunity to learn various advanced topics by taking elective courses in computer science. Students are carefully advised by faculty members of the department. The major in computer science helps to prepare students for a career in the field and/or further study in a graduate program. The ACM curriculum recommendations are used as guidelines to create the computer science curriculum.

A student must earn a grade of ‘C-’ (1.67) or better in all classes for a major or minor in Computer Science with an average of ‘C’ (2.00) or above in computer science and ‘C’ or above in MA 201.

Prerequisites for Computer Science courses must be completed with a grade of ‘C-’ or above.

Majors & Programs

Courses

CS 115: Computational Thinking for Problem Solving

Having computational thinking skills, not just digital literacy or IT skills, is important. It is a problem-solving process that includes decomposition, abstraction, pattern recognition, and algorithms. This class introduces students to the elements of computational thinking which will improve real-life problem-solving skills. Students will also learn simple coding using a visual programming language. The class includes in-class laboratory work.

CS 125: Introduction to Web Design

This course offers fundamental concepts of web design, including learning the basic web design using HTML (Hypertext Markup Language) and CSS (Cascading Style Sheets). Additionally, students would learn to use drag and drop website builder to rapidly develop their websites without any previous experience.

CS 160: Introduction to Computer Science

An introduction to the fundamental concepts of computer science. Topics include I/O, control structures, arrays, and structured programming techniques. This course, along with CS 170, is the basis for the rest of the computer science curriculum. A programming language will be introduced.

CS 170: Introduction to Data Structures

A continuation of CS 160. An introduction to basic data structures such as stacks, queues, linked lists, and expression trees all with an emphasis on object-oriented programming. Searching, sorting, elementary algorithm analysis, and recursion will be introduced.

CS 250: Programming Practicum

Fundamental syntactic and stylistic techniques of an individual programming language such as assembly languages, FORTRAN, Ada, Prolog, LISP, C, C++, C#, and others. Maybe repeated for credit with different languages.

CS 260: Data Structures and Algorithms

Algorithms and data structures for sorting, searching, trees, and graph algorithms. Algorithms and data structures associated with file processing, such as hashing, indexing, and B-trees, along with a continued examination of algorithm analysis.

CS 270: Software Development

This course gives students experience gathering requirements, designing, implementing, testing, debugging, and other aspects of medium-sized software projects.

CS 280: Computer Organization and Architecture

Introduction to computer systems, organization, and architecture. Topics include representation of data, instructions sets, addressing modes, digital logic, logic circuits, logic devices, memory, register transfer, and alternative architectures.

CS 350: Concepts of Programming Languages

History of programming languages. Organizational issues: data and control structures; run-time behavior of programs. Lexical and syntactic specification and analysis. Examination of procedural, obj ect-oriented, functional, and logic programming languages.

CS 360: Theory of Computation

A study of the theoretical aspects of computer science in relation to programming languages. Topics includes regular languages, context-free languages, the Church-Turing thesis, decidability and reducibility.

CS 380: Operating Systems

Introduction to operating system concepts including process, device, and memory management. Other topics include the history of operating systems and security.

CS 410: Computer Networking

Topics include basic hardware, software and architectural components for computer communications, computer networks, switching, routing, protocols and security. Topics involving interfacing operating systems and networks are covered. Students will get hands-on experience with local area networks.

CS 420: Artificial Intelligence and Expert Systems

Introduction to artificial Intelligence and expert systems concepts. Topics include knowledge representation, search algorithms, reasoning, and shells. Programming in an AI language such as LISP and/or PROLOG.

CS 440: Computer Graphics Programming

An introduction to computer graphics programming. Topics include lines, curves, windows, clipping, two- and three-dimensional transformations, projections, and hidden line removal.

CS 460: Theory of Database Systems

File structures and access methods. Database modeling, design and user interface. Emphasis on relational database models. Information storage and retrieval, query languages, and high-level language interface with database systems. The students develop a nontrivial database system using a language designed for databases.

CS 463: Internship in Computer Science

Work experience in the computer environment of a business, financial institution, government agency, or National Laboratory, such as Argonne, Oak Ridge, etc. This work experience must advance the student's knowledge of computing.

CS 485: Senior Seminar

Senior capstone course for majors in Computer Science. Topics include software design and research. Students design and implement a large software project, write a research paper, and make a presentation to the class Also, all students take a Major Field Achievement test.