Course Descriptions

CSC201 / Computer Applications [1-0, 1 cr.] 

The course ensures that all students will acquire basic, internationally recognized computer proficiency skills. Teaching and learning will be hands-on, in a computer-equipped classroom. The topics include the concepts of information technology, using the computer and its operating system and managing files, word processing, spreadsheets, and presentation software.

CSC241 / Introduction to Computing [3-0, 3 cr.] 

This course provides a lengthy first coverage where students would acquire a holistic understanding of computing, and an appreciation of technology’s impact on society. Topics include binary values and number systems, data representation, gates and circuits, computing components, problem solving and algorithm design, low-level and high-level programming languages, abstract data types and algorithms, operating systems, file systems and directories, information systems, artificial intelligence, simulation and other applications, computer networks, the world wide web, and limitations of computing.

CSC243 / Introduction to Object Oriented Programming [3-0, 3 cr.] 

This course introduces the fundamental concepts, and techniques, of programming and problem solving, from an object-oriented perspective. Topics include the introduction to computer systems (hardware, software, compilation, execution), fundamental programming constructs, (variables, primitive data types, expressions, assignment), program readability, simple I/O, conditional constructs, iterative control structures, structured decomposition, method call and parameter passing, basic program design using algorithms, algorithm stepwise refinement, pseudo-code, introduction to the object-oriented paradigm (abstraction, objects, classes, entity and application classes, class libraries, methods, encapsulation, class interaction, aggregation), inheritance, error types, simple testing and debugging, 1-D and 2-D arrays, basic searching and sorting algorithms. 
 

CSC245 / Objects and Data Abstraction [3-0, 3 cr.]

This course presents further techniques of object oriented programming and problem solving, with emphasis on abstraction and data structures. Topics include: object oriented concepts, such as, composition, inheritance, polymorphism, information hiding, and interfaces; basic program design and correctness, such as, abstract data types, preconditions and post conditions, assertions and loop invariants, testing, basic exception handling, and the application of algorithm design techniques. The course also covers: basic algorithmic analysis, time and space tradeoffs in algorithms, big-O notation; fundamental data structures and applications, such as, collections, single- and double-linked structures, stacks, queues, and trees; performance issues for data structures; recursion, more sorting algorithms. 

Prerequisite: CSC243 / Introduction to Object Oriented Programming

CSC310 / Algorithms and Data Structures [3-0, 3 cr.]

This course presents the fundamental computing algorithms and data structures, with emphasis on design and analysis. Topics include the asymptotic analysis of upper and average complexity bounds, the best, the average, and the worst, case behaviors. Recurrence relations, sets, hashing and hash tables, trees and binary trees (properties, tree traversal algorithms), heaps, priority queues, and graphs (representation, depth-and breadth-first traversals and applications, shortest-path algorithms, transitive closure, network flows, topological sort). The course also covers the sorting algorithms and performance analysis which include mergesort, quicksort and heapsort. As well, the course details the fundamental algorithmic strategies (divide­ and-conquer approach, greedy, dynamic programming, and backtracking) and provides an introduction to NP-completeness theory.

Prerequisites: CSC 245 / Objects and Data Abstraction and MTH207 / Discrete Structures I

CSC320 / Computer Organization [3-0, 3 cr.]

Overview of the history of the digital computer, representation of numeric data, introduction to digital logic, logic expressions and Boolean functions, and logic functions minimization as well as processor and system performance, and Amdahl’s law. The course provides an introduction to reconfigurable logic and special-purpose processors, 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 are also covered as well as memory hierarchy, latency and throughput, cache memories: operating principles, replacement policies, multilevel cache, and cache coherency. Finally, the course covers register-transfer language to describe internal operations in a computer, instruction pipelining and instruction-level parallelism (ILP), an overview of superscalar architectures, and multicore and multithreaded processors.

Co-requisites: CSC 245 / Objects and Data Abstraction, and MTH 207 Discrete Structures I

CSC322 / Computer Organization Lab [3-0, 1 cr.]

Students gain experience with computer organization techniques by designing and implementing actual circuits using a high-level language, Verilog HDL and FPGAs. The course culminates in the design and simulation of a complete pipelined CPU.

Co-requisite: CSC 320 / Computer Organization

CSC323 / Digital Systems Design [3-0, 3 cr.] 

The course introduces students to the organization, and architecture, of computer systems. Topics include the fundamental building blocks of digital logic (logic gates, flip-flops, counters, registers), programmable logic devices, (logic expressions, minimization, sum of product forms), register transfer notation, finite state machines, physical considerations, data representation, numeric data representation and number bases, representation of nonnumeric data, digital circuit modeling, HDL (VHDL, Verilog), simulation of digital circuit models, synthesis of digital circuits from HDL models, and the hierarchical and modular design of digital systems (simple data paths and hardwired control unit realization) as well as the introduction to embedded systems.

Prerequisite: CSC243 / Introduction to Object Oriented Programming

CSC326 / Operating Systems [3-0, 3 cr.] 

The course introduces the fundamentals of operating systems design and implementation. Topics covered include operating system components; process scheduling; interprocess communication; process synchronization (semaphores and monitors); mutual exclusion problem; deadlock handling mechanisms; concurrent execution; multithreading; interrupt handling in a concurrent environment; mutual exclusion; virtual memory; page placement and replacement policies; caching; and fundamental concepts of file systems. 

Prerequisites: CSC 245 / Objects and Data Abstraction, and CSC 320 / Computer Organization
 

CSC375 / Database Management Systems [3-0, 3 cr.]

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 transactions at the SQL level.

Prerequisite: CSC 245 / Objects and Data Abstraction, and MTH 201 / Calculus III

CSC412 / Introduction to Bioinformatics [3-0, 3 cr.] 

This course provides an introduction to modern computational practices in bioinformatics. Topics include computational methods for: fragment assembly; sequence alignment; modeling evolution; gene finding; gene expression; protein structure and function. 

Prerequisite: CSC310 / Data Structures & Algorithms

CSC420 / Computer Architecture [3-0, 3 cr.] 

This course deals with the architecture of computers, with an emphasis on the architecture of the general purpose computers, using modern concepts such as pipeline design, memory hierarchies, IO systems, and parallel processing. The course tackles advanced computer architecture concepts which include pipelining and pipelined processors, instruction level parallelism, VLSI architectures, superscalar architectures, code scheduling for ILP processors, storage systems and RAID, memory systems, and multiprocessing and cache coherency problem, as well, the course tackles parallel processing. 

Prerequisite: CSC320 / Computer Organization

CSC430 / Computer Networks [3-0. 3 cr.]

This course introduces the structure, implementation, and theoretical underpinnings of computer networks. Topics include network structure, performance metrics, circuit switching and packet switching, the Internet protocol stack, physical layer networking concepts, data link layer technologies and protocols, internetworking and routing, transport layer protocols, application layer protocols, client-server programming, and emerging technologies.

Prerequisite: CSC326 / Operating Systems

CSC435 / Computer Security [3-0, 3 cr.] 

This course is an introduction to computer security including formal models of security, security goals and fundamentals (confidentiality, integrity, availability, etc.), introduction to risk assessment and management, security standards in government and industry (e.g., Common Criteria, Orange Book, etc.), corporate and institutional security policies, evaluation process and levels, computer system protection principles, access controls, cryptography fundamentals, authentication, security operations, software attacks including malicious code and buffer overflows, social engineering, injection attacks, and related defense tools, network attacks including denial of service, flooding, sniffing and traffic redirection, defense tools and strategies, web sites attacks including cross-site scripting, IPSec, Virtual Private networks and Network Address Translation, and ethics. Hands-on experience is part of the class.

Prerequisite: CSC326 / Operating Systems

CSC 440 / Advanced Object Oriented Programming [3-0, 3 cr.]

This course presents advanced object oriented programming concepts, and techniques, using modern programming languages and frameworks. Topics include the review of object oriented programming concepts, graphics, graphical user interface components, event-based programming, applets, strings and characters, bit manipulation, exception handling, files and streams, collections, multimedia, multithreading, accessing databases, and design patterns. 

Prerequisite: CSC245 / Objects and Data Abstraction

CSC443 / Web Programming [3-0. 3 cr.]

This course introduces advanced concepts in web programming, and focuses on the development of dynamic web pages that incorporate both client-side and server-side programming. Topics include web scripting using JavaScript, VBScript, and PHP, as well as Java Beans, and server side components such as CGI, ASP, and PHP, and the installation and configuration of web servers. The course also discusses accessing databases through web applications. Hands-on experience is part of the class. 

Co-requisite: CSC375 / Database Management Systems

CSC447 / Parallel Programming for Multicore and Cluster Systems [3-0, 3 cr.] 

This course provides an introduction to parallel programming with a focus on multicore architectures and cluster programming techniques. Topics include relevant architectural trends and aspects of multicores, writing multicore programs and extracting data parallelism using vectors and SIMD, thread-level parallelism, task-based parallelism, efficient synchronization, program profiling, and performance tuning. Message-passing cluster-based parallel computing is also introduced. The course includes several programming assignments to provide students first-hand experience with programming, and experimentally analyzing and tuning parallel software. 

Prerequisites: CSC310 / Algorithms and Data Structures; CSC326 / Operating Systems

CSC450 / Computer Graphics [3-0, 3 cr.] 

This course is an introduction to computer graphics algorithms, programming methods, and applications.  The course focuses on the fundamentals of two and three dimensional raster graphics, scan-conversion, clipping, geometric transformations, computational geometry, computer-human interfaces, animation, and visual realism. 

Prerequisite: CSC310 / Algorithms and Data Structures

CSC458 / Game Programming [3-0, 3 cr.]

This course introduces the software technologies related to game development, as well as the art and design principles needed to create compelling games.  Topics include game history and taxonomy; game play design and the components of a video game experience; software architecture for games; intro to 3D graphics and stereoscopic computer graphics; hardware architecture of contemporary video game platforms; human physical and perceptual limits; game artificial intelligence; multiplayer game design; game physics, and an introduction to real time shading effects. 

Prerequisite: CSC310 / Data Structures & Algorithms

CSC460 / Artificial Intelligence [3-0, 3 cr.] 

This course is a survey of knowledge-based artificial intelligence. Topics include the history, definition, philosophical foundations, search techniques, game playing, propositional logic, predicate logic, knowledge representation, planning, and the natural language processing and agents. 

Prerequisite: CSC310 / Algorithms and Data Structures

CSC480 / Social and Professional Issues in Computing [3-0, 3 cr.] 

This course covers the social impact, implications, and effects, of computers on society, and the responsibilities of computer professionals in directing the emerging technology. Topics include the history of computing, the legal and ethical responsibilities of professionals, the risks to the public, Internet censorship, industrial intelligence gathering, intellectual property issues and software copyrights, environmental concerns, medical and biotechnology ethics, hacking, professional liability, “malware” and viruses, whistle blowing, privacy, data security, and universal accessibility. The course includes literate business writing, oral presentations, debates, job hunting and interviewing, professional etiquette, critical thinking, and peer reviewing.

CSC490 / Software Engineering [3-0, 3 cr.] 

This course presents the techniques for developing reliable, and cost-effective, medium-to-large-scale object-oriented and classical software. It also involves project development to implement these techniques. Topics include the software life-cycle and process models, the software requirements elicitation, specification, and validation techniques, the design techniques for object-oriented and classical software (architectural, and component, level design and the basic unified modeling language diagrams), software testing (black box and white box testing techniques), unit, integration, validation, and system testing, as well as the basic software project management and quality issues, and the documentation and technical writing, and the use of CASE tools. 

Co-requisite: CSC375 / Database Management Systems

CSC491 / Professional Experience [0-3, 1 cr.]

Students participate in a project-based Professional Experience in the junior year. The department requires evidence of project-based work and relevant professional experience. 

Co-requisite: CSC490 / Software Engineering

CSC495 / IT Project Management [3-0, 3 cr.]

This course introduces managing projects within an organizational context as well as managing the changes resulting from introducing or revising information technology systems. Topics include project lifecycle, project stakeholders, project management skills (leading, communicating, negotiating, influencing, and presenting), change control (scope, schedule, cost, quality, risk, project team, and senior management), project planning (definition, scope, schedule, costs, quality, resources, and risks), contingency planning, project reporting and controls (definition, scope, schedule, costs, quality, resources, and risks), the role of IT in organizational change, activities required to ensure the success of IT projects (training, job redesign, communication, etc.).  Students are expected to develop detailed project plans, schedules, and budgets; estimate project resources; allocate/coordinate resources; and interface with management. Hands-on experience using project management software is required.  

Co-requisite: CSC490 / Software Engineering

CSC498 / Topics in Computer Science [3-0, 3 cr.]

This course covers selected topics in computer science. This course may be repeated for credits. 

CSC599 / Capstone Project [3-0, 3 cr.]

This course is a stand-alone project course that allows students to integrate the many concepts, and skills, they have learned.  The course requires the design, implementation, and oral presentation of a complete significant team project. 

Prerequisite: CSC490 / Software Engineering

Co-requisite: ENG 202/Sophomore Rhetoric and ENG203/Fundamentals of Oral Communication

Last modified: September 26, 2017