Course Description
CSC 210 C++ Programming (3 credits)
An introduction to a disciplined approach to computer programming and problem solving, utilizing C++ as a block-structured high-level language, with an emphasis on procedural abstraction and good programming style. This course covers the basic repetition and selection constructs, procedures and functions, parameter passing, scope of variables, arrays, I/O, memory management, references, defining structures & classes, and introducing pointers.
Co-requisite: ENG 100
CSC 210L C++ Programming Lab (1 credit)
This course applies the theoretical concepts of programming design using a C++ compiler. Students will work with programming challenges under guidance in the lab. The main activity in the course is to work in a creative way and construct, try out and experiment with solutions. Team work and Group solving practical sessions are also encouraged.
Co-requisite: CSC 210
CSC 310 Object Oriented Programming (3 credits)
C# is a modern, object-oriented programming language intended to create simple yet robust programs. Designed specifically to take advantage of CLI features, C# is the core language of the Microsoft .NET framework. In this course, students gain the skills to exploit the capabilities of C# and of the .NET Framework to develop programs useful for a broad range of desktop, Web & mobile applications. Topics covered include introduction to Microsoft’s .Net framework, classes & interfaces, arrays, strings, regular expressions, properties & indexes, operator overloading, enums, structures, exception handling, delegates & events, multithreading, and generics.
Prerequisite: CSC 210
CSC 320 Data Structures (3 credits)
The design, implementation of important data structures and algorithms. The data structures considered include sorted arrays, linked lists, stacks, queues, and trees. An approach based on abstract data types and classes will be emphasized. The use of recursion for algorithm design. Class design and implementation in C++. Programming assignments in the C++ language.
Prerequisite: CSC 210
CSC 330 Database Systems (3 credits)
This course is an introduction to the fundamental concepts and techniques of database systems. Topics include database architecture; data independence; data modeling; physical and relational database design; functional dependency; normal forms; query languages; query optimization; database security, and transaction at the SQL level.
Prerequisite: CSC 320
CSC 330L Database Systems Lab (1 credit)
This course applies the theoretical concepts of database design using a specific application on a commercial database management system. Topics include: general concepts of a DBMS, installation, architecture, configuration, monitoring, user management, security, transaction handling, optimization, backup & recovery, and replication are checked and compared with other commercial database management systems.
Co-requisite: CSC 330
CSC 340 Theory of Computation (3 credits)
An introduction to the formal languages and automata, with emphasis on context-free and regular languages. Topics will include regular grammars, deterministic and non-deterministic finite state machines, parsing algorithms, linear-bounded automata and the use of Turing machines.
Prerequisite: MAT 250 & CSC 320
CSC 400 Web Programming (3 credits)
This course introduces the fundamentals needed to program on the Internet, and the state of the art technologies used in designing and developing rich multi-tiered web-based applications. It presents the basics of client-side/server-side web programming and the skills and tools needed to create dynamic Web-based applications. It reviews the coverage of various markup languages (HTML) and their associated cascading style sheets and provides an in-depth study of several client-side scripting technologies such as (JavaScript & jQuery), AJAX-enabled rich Internet applications such as (VUE or Angular …), server-side technologies & modern MVC frameworks such as (.NET Core or PHP frameworks …), in addition to web services, web servers, and multi-tiered applications using relational database systems. The course also covers browser compatibility, common CSS frameworks such as (Bootstrap), search engine optimization, social media optimization, and hosting & deploying web apps to cloud-based systems.
Prerequisite: FOE 201 & CSC 210
CSC 420 Algorithms (3 credits)
This course builds upon existing skills in the mathematical analysis of algorithm complexity, including lower bounds, worst-case and average-case behavior. General techniques in algorithm design (such as divide and conquer, greedy and dynamic programming approaches) in the context of problem domains like graph, sorting, and optimization problems.
Prerequisites: CSC 320
CSC 450 Operating Systems (3 credits)
This course provides an introduction to the fundamentals of operating system function, design, and implementation. It contains a theory component about the concepts and principles that underlie modern operating systems, and a practice component to relate theoretical principles with operating system implementation. The course divides into three major parts. The first part of the course discusses concurrency (processes, threads, scheduling, synchronization, and deadlocks). The second part of the course discusses memory management (memory management strategies and virtual memory management). The third part of the course concerns file systems, including topics such as secondary storage systems and I/O systems. If time permits, the following topics will be briefly examined: virtualization, security, distributed synchronization, and perhaps other topics. A case study of a contemporary operating system like UNIX accompanies the course.
Prerequisite: COE 380
CSC 470 Software Engineering (3 credits)
An introduction to the basic principles and practices of software engineering. Exposes students to a wide range of software engineering concepts and state-of-the-art technologies. Emphasis is placed on learning and practicing software engineering principles. Topics include both technical aspects and non-technical aspects of software engineering, such as software life cycle models, specification and design methods, implementation and testing issues, deployment and post maintenance.
Prerequisite: CSC 320
COE 360 Computer Networks (3 credits)
Introduction to data communication systems. Local Area Networks; OSI and TCP/IP layer models. Various layer functions and services. Analog and digital communication systems. Multiplexing. Modulation/demodulation techniques. Transport protocols. Ethernet and wireless technologies. Internet Protocol (IP). Network applications.
Prerequisite: CSC 210
COE 360L Computer Networks Lab (1 credit)
This course applies the theoretical concepts of networking using CISCO commercial products. Specific topics include on a commercial database management system. Topics include: network fundamentals, LAN switching technologies, routing technologies, WAN technologies, infrastructure services, infrastructure security, and infrastructure management.
Co-requisite: CSC 360
COE 380 Computer Organization (3 credits)
Overview of the history of the digital computer, representation of numeric data, introduction to digital logic, logic expressions and Boolean functions, logic functions minimization. Processor and system performance, Amdahl’s law. Introduction to reconfigurable logic and special-purpose processors. Introduction to instruction set architecture, and microarchitecture. Processor structures, instruction sequencing, flow-of control, subroutine call and return mechanism, structure of machine-level programs, low level architectural support for high-level languages. Memory hierarchy, latency and throughput, cache memories: operating principles, replacement policies, multilevel cache, and cache coherency. Register-transfer language to describe internal operations in a computer, instruction pipelining and instruction-level parallelism (ILP), overview of superscalar architectures. Multicore and multithreaded processors.
Prerequisite: EEE 225
FOE 201 Intro to Computing (3 credits)
This course introduces the basic components of a computer, as well as the basic techniques for designing and writing a program. The course also introduces markup languages and their associated cascading style sheets; in addition, it provides an introduction to scripting technologies. Topics covered include computer hardware components, networking, mainframes, input & output devices, memory, high-level languages, compilers & interpreters, HTML, CSS, and JavaScript.
Corequisite: ENG 100
EEE 225 Digital Logic Design (3 credits)
Fundamentals of logic design, Boolean algebra, simplification of Boolean expressions, design of combinational circuits, design with SSI and MSI logic ICs including PLDs. Flip flops, analysis and synthesis of sequential circuits, design with MSI and LSI logic ICs. Training kits will be used in the lab to build logic circuits.
Corequisite: ENG 100 & MAT 213
EEE 225L Digital Logic Design Lab (1 credit)
The digital logic design lab is designed to provide the students with hands-on experience on designing, testing, debugging, verifying, and demonstrating the operation of a digital circuits. The lab involves the operation of software logic design tools as well as using actual breadboards and logic chips to construct and operated combinational and sequential digital circuits that meets certain design specifications.
Corequisite: EEE 225
CSC 497 Practical Training (3 credits)
Students in their junior year are required to work on part-time or full-time basis in order to experiment with and practice what they learned in class. A student presents a formal report by the end of this training period then he/she makes a public presentation exposing his/her experience.
Prerequisite: Consent of Advisor
CSC 498 Capstone Project Proposal (0 credit)
Students are prepared in this course seminar to deal efficiently and effectively with the fundamentals of systematic research. Graduating students will learn to brainstorm the different available research opportunities and prepare a formal outline that shall constitute the structure for their graduation senior project. Topics include design philosophies, problem conceptualization, problem definition, project planning and budgeting, written and oral communication skills, teamwork, development of specifications, and effective utilization of available resources.
Prerequisite: Consent of Advisor
CSC 499 Capstone Project (3 credits)
Students will utilize the blue prints prepared in CSC 498 to realize the actual design. In this course, the software will be completed, tested for specifications and a prototype could be finalized. The final report shall include all necessary steps to describe the whole process including software development and/or selection if necessary. A formal oral presentation is required under the supervision of a formal judging committee formed from the faculty members.