CSC 101 Introduction to Computer Science 3.00 CSC 102 Application Development for Beginners 3.00 CSC 122 Computational Problem Solving 3.00 CSC 123 Fundamentals of Web Design 3.00 CSC 125 Object Oriented Programming I 3.00 CSC 225 Programming and Data Structures 3.00 CSC 226 Object Oriented Programing II 3.00 CSC 230 Digital Systems 4.00 CSC 235 Programming Challenges 3.00 CSC 270 Computer Systems: Architecture and Organization 3.00 CSC 271 Computer Systems: Programming 3.00 CSC 275 Advanced Programming with Unix 3.00 CSC 290 Data Science 3.00 CSC 300 Discrete Structures 3.00 CSC 301 Web Application Development 3.00 CSC 313 Design and Analysis of Algorithms 3.00 CSC 325 Concepts of Programming Languages 3.00 CSC 326 Object Oriented Design Patterns 3.00 CSC 350 Software Engineering 3.00 CSC 351 Software Requirements & Business Analysis 3.00 CSC 361 Database Management Systems 3.00 CSC 380 Mobile Application Development 3.00 CSC 399 Internship in Computer Science 3.00 CSC 404 Introduction to eCommerce 3.00 CSC 405 User Interface Development 3.00 CSC 410 Software Testing & Quality Assurance 3.00 CSC 420 Software Maintenance & Re-engineering 3.00 CSC 428 Program Translation Techniques 3.00 CSC 430 Artificial Intelligence 3.00 CSC 444 Digital Image Processing 3.00 CSC 451 Capstone Project 3.00 CSC 456 Software Development Processes 3.00 CSC 473 Computer Networks & Communications 3.00 CSC 476 Operating Systems 3.00 CSC 477 Security in Computing 3.00 CSC 489 Topics in Computer Science 3.00 CSC 490 Introduction to Academic Research in CSC 3.00 CSC 492 Practicum in Computer Science 3.00 PHIL 245 Ethics and the Computer 3.00

CSC 101 Introduction to Computer Science 3.00

Prerequisite: (ENGL 100 pre or co) . CS & MIS students can take course only before finishing 45 credits.

Introduction to computer science and programming. Topics include information and data representation, hardware, programming methodology, algorithm design, abstract data types, programming language, operating systems, applications and communications.

CSC 102 Application Development for Beginners 3.00

Prerequisite: (ENGL 100 pre or co) . CS & MIS students can take course only before finishing 45 credits.

Introduction to application development. Topics include: basics of problem solving techniques, game programming, mobile applications.

CSC 122 Computational Problem Solving 3.00

Prerequisite: ENGL 098/100/110/112 & (CS or COE Majors)

An introductory course to problem solving and computational thinking using computer programming. Topics include: problem solving fundamentals, programming basics, variables and expressions, input/output, control structures, functions, strings and files.

CSC 123 Fundamentals of Web Design 3.00

Prerequisite: ENGL 100 coreq

Web design practices using modern technologies. Topics include: Website basic elements, Web page design, creating site content, and launching a web site.

CSC 125 Object Oriented Programming I 3.00

Prerequisite: CSC 122

Programming fundamentals from an object oriented design perspective. Topics include: basic procedural concepts, objects, classes, interface, methods, encapsulation, information hiding, and inheritance.

CSC 225 Programming and Data Structures 3.00

Prerequisite: CSC 125

Advanced programming techniques using data structures. Topics include recursion, lists, stacks, queues, trees, graphs, and hash tables.

CSC 226 Object Oriented Programing II 3.00

Prerequisite: CSC 225 coreq

Object oriented analysis, design, and advanced programming concepts. Topics include: polymorphism, abstract classes, interfaces, exception handling, graphical user interface, and modelling notations.

CSC 230 Digital Systems 4.00

Prerequisite: CSC 125

Introductory course in digital logic and its specification and simulation. Number systems. Binary arithmetic. Boolean algebra. Combinational logic design. Sequential logic design (controllers). Data Path components (e.g. Registers, adders, register files , etc.). Memory components (e.g. RAM, ROM). Register transfer level (RTL) design.

CSC 235 Programming Challenges 3.00

Prerequisite: CSC 225

Practicing advanced problem solving techniques: arrays, stacks, queues, strings, sorting, arithmetic, algebra, combinatorics, number theory, backtracking, geometry, graphs algorithms and traversals. Introduction to dynamic programming, preparing students majoring in computer science for international and regional ACM programming contests.

CSC 270 Computer Systems: Architecture and Organization 3.00

Prerequisite: CSC 230

Computer architecture and organization. Topics include performance evaluation, instruction, set architecture, data path, control unit, pipelining, memory hierarchy, storage, and other I/O topics.

CSC 271 Computer Systems: Programming 3.00

Prerequisite: CSC 270

Introduction to systems programming in Unix/Linux environment. Topics include scripting, libraries, utilities, development tools, piping, binary files, exception handling, command-line arguments, and symbolic debugging.

CSC 275 Advanced Programming with Unix 3.00

Prerequisite: CSC 225 as prerequisite or corequisite

Exploration of the Unix operating system, including its tools and utilities for program development, such as makefile, piping and redirection, shell scripts, regular expressions, and symbolic debuggers. In addition, this course explores advanced features of the C programming language, including various file processing, command-line and variable arguments, exception handling, and generic interfacing.

CSC 290 Data Science 3.00

Prerequisite: CSC 125 & MATH 221

Introduction to Data Science. Topics include data acquisition, data management, data preparation and integration, data analysis, model development and deployment, and visualization.

CSC 300 Discrete Structures 3.00

Prerequisite: CSC 125 & MATH (131 or 140)

This course introduces discrete structures. Topics include: basic logic, sets, relations, functions, proof techniques, counting methods, recursion, trees and graphs.

CSC 301 Web Application Development 3.00

Prerequisite: CSC 226 & 361 coreq

Introduction to web development. Topics include client/server side scripting, dynamic websites, web services, database connectivity, security, and authentication.

CSC 313 Design and Analysis of Algorithms 3.00

Prerequisite: CSC 225 & 300

Design & analysis of recursive and non-recursive algorithms. Topics include asymptotic analysis of algorithm efficiency, algorithm design techniques (e.g. divide-and-conquer, dynamic programming, greedy approaches) and their applications to computational problems, and introduction to parallel algorithms.

CSC 325 Concepts of Programming Languages 3.00

Prerequisite: CSC 226

Principles of programming language design. Specification of syntax and semantics. Underlying implementation of block structured languages. Dynamic memory allocation for strings, lists and arrays. Imperative versus applicative programming. First order logic and logic programming. Lambda calculus and functional programming languages. Modern programming languages.

CSC 326 Object Oriented Design Patterns 3.00

Prerequisite: CSC 226

In-depth study of object-oriented design patterns. Topics include: creational patterns, structural patterns, and behavioral patterns. Pattern's intent, motivation, applicability, participants, collaborations, consequences, and implementations.

CSC 350 Software Engineering 3.00

Prerequisite: CSC 226

Introduction to software engineering. Topics include software development life cycle, software processes, requirements engineering, software architecture and design, software testing, software evolution, and software modeling using UML.

CSC 351 Software Requirements & Business Analysis 3.00

Prerequisite: CSC 350

Introduction to modern business analysis. Topics include: planning and monitoring, elicitation, requirements, analysis, solution assessment and validation, requirements management and communication, business problems identification, business cases development and plans for achieving effective solutions.

CSC 361 Database Management Systems 3.00

Prerequisite: CSC 313 PRE OR CO

Fundamentals of Database Management Systems. Modern database models. Basic database management concepts. Query languages. Relational algebra and relational calculus. Database design through normalization. Development experience in a team environment.

CSC 380 Mobile Application Development 3.00

Prerequisite: CSC 226 & CSC 361 coreq

Introduction to mobile application development. Topics include creating and deploying mobile applications, development approaches, programming languages, frameworks, application architecture, event-driven programming, model-view-controller, user interface and usability.

CSC 399 Internship in Computer Science 3.00

Prerequisite: Junior Standing

Internship in computer science provides students with an opportunity to integrate theory and practice in a work setting. The course helps students to grow professionally and intellectually. It also sharpens their communication and teamwork skills. Enrolled students are required to complete a minimum of 150 working hours at approved organizations.

CSC 404 Introduction to eCommerce 3.00

Prerequisite: CSC 361 Pre or co-requisite

Introduction to eCommerce. Topics include electronic data interchange, digital currency, electronic catalogs, telecommunications infrastructure, data warehousing, software agents, storage retrieval, cryptographic techniques, and different levels of security.

CSC 405 User Interface Development 3.00

Prerequisite: CSC 226

Introduction to user interface design principles and techniques. Topics include user and task analysis, interaction design, interaction elements and styles, design patterns, visual communication, prototyping, and evaluation of different user interfaces.

CSC 410 Software Testing & Quality Assurance 3.00

Prerequisite: CSC 350

Techniques for software validation and verification. Topics include: concepts of software quality (metrics, assurance, planning & implementation, process standards, validation, verification, reviews, walkthroughs and inspections). Software testing process and techniques at different levels. Validating test data.

CSC 420 Software Maintenance & Re-engineering 3.00

Prerequisite: CSC 350

Introduction to software maintenance and re-engineering. Topics include evolution and maintenance models, re-engineering, legacy information systems, impact analysis, refactoring, program comprehension, principles of reuse and reverse engineering, approaches, and tools used to extract information from existing software systems.

CSC 428 Program Translation Techniques 3.00

Prerequisite: CSC 226 & 270

Principles and techniques for designing and implementing a compiler. Topics include lexical analysis, parsing techniques, syntax-directed translation, intermediate languages, and code generation.

CSC 430 Artificial Intelligence 3.00

Prerequisite: CSC 313

Survey of artificial intelligence techniques. Topics include search, logic, knowledge representation, reasoning with uncertainty, learning, and other AI techniques.

CSC 444 Digital Image Processing 3.00

Prerequisite: CSC 226 & MATH 140 & 221

Introduction to digital image processing. Topics include Digital image fundamentals, intensity transformations, and spatial filtering, filtering in frequency domain, Image restoration and reconstruction, Color image processing, Image compression, and Image segmentation.

CSC 451 Capstone Project 3.00

Prerequisite: CSC 350 & CSC 361 & PHIL 245

The senior capstone course provides computer science students the opportunity to employ knowledge gained from courses throughout the curriculum to develop a software solution to a real-world problem from conception to completion. Students work in teams to develop software applications. Advanced methods related to requirements analysis, software design, project management, documentation and testing, programming techniques, and database designs will be applied on an incremental basis since the emphasis is on semester-long capstone team projects.

CSC 456 Software Development Processes 3.00

Prerequisite: CSC 350 or CSC 452

This course is an in-depth study of software development processes in the context of an actual project. Discussion includes object-oriented processes, such as Rational Unified Process, as well as process management issues such as scheduling, risk-assessment, various metrics, and the selection of appropriate development methodology and tools.

CSC 473 Computer Networks & Communications 3.00

Prerequisite: CSC 313 & MATH 221

Introduction to computer communications networks. Topics include circuit-switching, packet switching, TCP/IP model layers, and wireless networks.

CSC 476 Operating Systems 3.00

Prerequisite: CSC 270

Design & implementation of operating systems. Topics include basic operating system structure, process and thread management, deadlocks, memory management, file management, input / output management, and distributed systems.

CSC 477 Security in Computing 3.00

Prerequisite: Senior Standing

Introduction to computer security and privacy. Topics include security in programs, operating systems, networks and databases.

CSC 489 Topics in Computer Science 3.00

Prerequisite: HOD Approval

Topics in Computer Science

CSC 490 Introduction to Academic Research in CSC 3.00

Prerequisite: Senior Standing

Introduction to Academic Research in Computer Science. Topics include: Research techniques and approaches, Computer Science research areas and metrics, literature review, writing a research paper, referencing and citations, and developing an effective workflow.

CSC 492 Practicum in Computer Science 3.00

Prerequisite: CSC 473 coreq & 361 coreq

Practicum in Computer Science prepares students for successful computing related careers. The course aims to train and certify the students with market demanding fields such as computer networks, database systems, computer system/ applications, business and leadership etc.

PHIL 245 Ethics and the Computer 3.00

Prerequisite: combined 6 credits from MATH, CSC or PHIL

Introduction to ethics theory and ethical decision making within the computing profession context. Topics include local and global impact of computing solutions, intellectual property, privacy, network security, electronic crimes and computer reliability.