Computer Science

Bachelor of Science in Computer Science

Course Descriptions

This course will provide students with an understanding of computers and how they operate as well as a basic understanding of how to manage and maintain computers and computer systems. These skills will provide students with the ability to configure computers and solve computer problems.

This course is the study of how the various components of Computer Systems fit together and interact. This course will focus in particular on the interaction of computer architecture (high-level hardware design) with compilers and operating systems.

The course is designed to present software engineering concepts and principles in parallel with the software development life cycle. … You will also learn about project management for the purpose of delivering high-quality software that satisfies customer needs and is within budget.

This course provides a hands-on comprehensive study of Cloud concepts and capabilities across the various Cloud service models including Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and Business Process as a Service (BPaaS).

This course, using both lecture and laboratory practice, introduces students to basic computer concepts in hardware, software, networking, computer security, programming, database, e-commerce, decision support systems, and other emerging technologies such as blogs, wiki, RSS, etc.

This course aims to introduce students to the legal, social, and ethical issues that are brought about by the globally-connected Internet and continuing increases in computing power.

This course deals with the structure, design and implementation of applications enabled by networking technology. This course will examine the fundamentals of network programming and the client-server architecture as well as exploring the role of protocols, authentication, distributed objects and security.

This course teaches fundamental concepts and terminology of computer programming. Students will develop skills in designing and writing simple computer programs. … Able to design and implement basic programming solutions including statements, control structures, and methods. • Able to develop simple GUI programs.

This course teaches fundamental concepts and terminology of computer programming. Students will develop skills in designing and writing simple computer programs. The course requires no programming background. … Able to design and implement basic programming solutions including statements, control structures, and methods.

Students explore more advanced concepts in computer science through Python. Students learn modular design, analyze data from files, explore object-oriented programming, interface with a hardware device, and implement graphical user interfaces.

The course covers the principles and use of object-oriented programming as exemplified in Java. Students will study searching, sorting, and the relative efficiencies algorithms implementing these tasks. Students will study recursively implemented algorithms, lists, stacks, queues, and tress together with further study of abstract data types. Students will complete a large programming project.

Topics include elementary data structures, (including arrays, stacks, queues, and lists), advanced data structures (including trees and graphs), the algorithms used to manipulate these structures, and their application to solving practical engineering problems. 

To convey the central principles in specifying, designing, and implementing programming languages. … This course focuses on the principles of programming languages. Topics covered include programming paradigms, concepts of programming languages, formal syntax and semantics, and language implementation issues.

This course teaches the basic operating system abstractions, mechanisms, and their implementations. The core of the course contains concurrent programming (threads and synchronization), inter process communication, and an introduction to distributed operating systems.

The course, Database Management Systems, introduces the management of database systems. The course emphasizes the understanding of the fundamentals of relational systems including data models, database architectures, and database manipulations.

This course introduces students to the expectations of written and verbal communication in the computer science profession, and explores the ways in which technology and media help shape professional communication.

The purpose of this course is to understand and use (abstract) discrete structures that are backbones of computer science. In particular, this class is meant to introduce logic, proofs, sets, relations, functions, counting, and probability, with an emphasis on applications in computer science.

This course is a traditional introduction to the theory of algorithms for computer science students. It covers methods to construct algorithms and to analyze algorithms mathematically for correctness and efficiency (e.g., running time and space used).

This course is a research field that studies how to realize the intelligent human behaviors on a computer. … The main research topics in AI include problem solving, reasoning, planning, natural language understanding, computer vision, automatic programming, machine learning, and so on.

This course is to present an introduction to Natural Language Processing (NLP, a.k.a. computational linguistics), the study of computing systems that can process, understand, or communicate in human language.

The course provides you the opportunity to learn concepts, principles, and skills to practice and engage in scalable pattern discovery methods on massive data; discuss pattern evaluation measures; study methods for mining diverse kinds of frequent patterns, sequential patterns, and sub-graph patterns; and study.

This course is a discipline that allows us to apply engineering and computer science concepts in the development and maintenance of reliable, usable, and dependable software. … The course is designed to present software engineering concepts and principles in parallel with the software development life cycle.

This course emphasizes the fundamentals of structured design, development, testing, implementation, and documentation. Includes language syntax, data and file structures, input/output devices, files and databases.

With every smartphone and computer now boasting multiple processors, the use of functional ideas to facilitate parallel programming is becoming increasingly widespread. In this course, you’ll learn the fundamentals of parallel programming, from task parallelism to data parallelism.

Students study techniques for designing algorithms and for analyzing the time and space efficiency of algorithms. The algorithm design techniques include divide-and-conquer, greedy algorithms, dynamic programming, randomized algorithms and parallel algorithms.

This class covers some of the more advanced topics in UNIX™ programming such as working with file and directory functions, system I/O, understanding signals, working with and synchronizing Threads, and TCP client and server design.

This course in database covers basic concepts and techniques in the implementation of a DBMS, notably data storage and index structures, query processing, concurrency control and transaction management. The course also introduces students to advanced research topics.

This course introduces mathematical logic from the perspective of computer science, emphasizing decidable fragments of logic and decision procedures. Course Objectives. The goal of the course is to prepare students for using logic as a formal tool in computer science.

This course introduces students to the essentials of Computational Geometry and presents an in-depth study of the fundamental geometric structures and techniques used in this field.

As each student is required to have a working knowledge of the Relational Database Model as well as SQL and PL/SQL programming skills, this course focuses on the administration of a DBMS including creation, management, maintenance, and operation of a database management system.

This course is a study of graphs, trees and networks. … Course Objectives: The successful student will know the definitions of relevant vocabulary from graph theory and combinatorics, and know the statements and proofs of many of the important theorems in the subject, and be able to perform related calculations.