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 and minor in Computer Science with an average of 'C' (2.0) or above in computer science and 'C' or above in MA 201. Computer Science majors must earn a 'C' or above in CS 160, CS 170, and CS 260.

Majors & Programs

Courses

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 Design

Introduction to the software development process: gathering requirements, designing, implementing, testing, debugging, and maintaining. The class particularly focuses on the design phase of the software development life cycle.

CS 275: Web Development

Have you ever wondered how you’d manage without websites – no online banking, instant information, or social media? Fortunately, web development brings these essential services to life. In this course, you’ll learn the fundamentals of web development, from HTML to CSS to JavaScript. You’ll discover how to create visually appealing and interactive sites. By the end, you’ll build responsive, user-friendly websites that captivate and engage users. This course is only offered online and is offered through a course-sharing consortium agreement.

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 320: Application Development I

This course is all about equipping you with the skills to build dynamic, database-driven web applications - the core of great app development. You will create powerful backend scripts using Java and JavaScript, build RESTful APIs, and develop miiddleware for user authentication and session management. By the end, you'll create apps that are not only functional but also beautiful, engaging, and solve real-world problems. This course is only offered online and is offered through a course-sharing consortium agreement.

CS 322: Application Development II

 This course will have you building sleek, dynamic web apps using tools, such as React and Angular. Learn to create stunning front-end interfaces, seamlessly connect them with backend services, and ensure everything runs smoothly. You’ll dive into component-based architecture, manage state like a pro, and master the art of making your apps faster and responsive. By the end, you’ll be ready to create full-stack applications that stand out and wow users. This course is only offered online and is offered through a course-sharing consortium agreement.

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 385: Career Navigation & Exploration in Computer Science

This course will help you find a job in Software Engineering upon graduation. Not just any job; one that meets your personal and financial needs and makes you excited about the future. In this course, you’ll explore career paths in Software Engineering, potential salary outcomes, and different roles. Then, you’ll pick target jobs and opportunities that are the best fit for you and make a clear plan of action toward securing them. This course is only offered online and is offered through a course-sharing consortium agreement.

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 475: Software Development

Ever wonder what it takes to turn a great idea into a fully functional software product? This course covers everything from concept to implementation. Learn to use Git for efficient code management, ensure quality with comprehensive testing, and streamline delivery with CI/CD pipelines. Discover design patterns and apply SDLC methods. By the end, you’ll be equipped to tackle any software project with confidence and expertise. This course is only offered online and is offered through a course-sharing consortium agreement.