Gradaute Course Catalog
CSC 500: Discrete Structures (3 credits)
Mathematics needed for Computer Science. Topics covered include: functions, relations, propositional
and first order predicate logic, set theory, proofs and their construction, counting and elementary
probability. The course will use a declarative language as a tool to support concrete implementations
of the mathematical ideas.
|
CSC 501/502: Introductory and Intermediate Computer Programming (3/3 credits)
This is an intensive, one-semester two-course sequence intended to provide students with the necessary
background in programming for the graduate program. The use of the computer to solve problems. Students
will learn general principles of program design at first by using libraries of predefined program units,
and later by constructing complete programs. Emphasis is on developing techniques for program design
that lead to correct, readable and maintainable programs. Intermediate programming techniques including
the use of recursion. An introduction to encapsulated data structures. Lists and list sorting will be
used to introduce a discussion of algorithm efficiency.
|
|
|
CSC 503: Java Programming (3 credits)
This course provides students with the necessary background in programming for the graduate program. Students will learn
general principles of program design at first by using libraries of predefined program units, and later by constructing
complete programs. Intermediate programming techniques including the use of recursion are covered. An introduction to
encapsulated data structures and algorithm efficiency.
|
|
|
|
CSC 549: Computing Essentials (3 credits))
This course provides students, who have minimal or no prior knowledge of computational environments, with an understanding
of modern computers and operating systems. Students will also learn general principles of programming design in an appropriate
computational environment such as Python. Emphasis is on developing techniques for program design that lead to correct and secure programs.
|
CSC 550: Object Oriented Design and Data Structures (3 credits)
The course combines a strong emphasis on Object-Oriented Design principles and design patterns with
the study of data structures. Fundamental Abstract Data Types, their implementations and techniques for
analyzing their efficiency will be covered. Students will design, build, test, debug and analyze
medium-size software systems and learn to use relevant tools.
Prerequisite: CSC 502 Intermediate Computer Programming or permission of the Graduate Director
|
|
|
CSC 551: Design and Analysis of Algorithms (3 credits)
Concepts of program complexity; basic approaches to complexity reduction: data structures and
techniques; worst cases and expected complexity. Topics to be covered may include sorting, set
manipulation, graph algorithms, matrix multiplication, and finite Fourier transforms, polynomial arithmetic,
and pattern matching.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 552: Computer Architecture (3 credits)
Overview of computer system organization, hardware components, and communications. Introduction to
boolean algebra, combinational and sequential logic, arithmetic, the CPU, memory, microprocessors,
and interfaces. CISC vs. RISC processors. Practical assembly language programming will be the emphasis
with an introduction to micro architecture and microprogramming on a variety of processors.
|
|
|
|
CSC 553: Computer Systems (3 credits)
An overview of the software required to integrate computer hardware into a functional system.
The following topics are covered. Operating systems a resource managers and as virtual machines.
System calls, in particular those required for process and file management; interrupt driven systems;
concurrency; memory management; file systems and security.
Prerequisite: CSC 550 Object Oriented Design and Data Structures or permission
of the Graduate Director
|
CSC 554: Theory of Computation (3 credits)
Formal languages, formal grammars, abstract machines;
models of computation (e.g. Turing machines); computational
complexity (NP completeness); undecideability and
uncomputability.
Prerequisite: CSC 500 Discrete Structures
|
CSC 620: Internet Application Development (3 credits)
This course will attempt to give you experience in designing Internet applications. A student finishing
this course should be able to design, implement, and maintain a large community or e-commerce web site.
They should leave the course with an understanding of a variety of Internet protocols and markup
languages, a knowledge of at least one common scripting tool, an understanding of how to implement a
database back-end into a large-scale site, and the ability to critically assess the usability of both
their design and the design others.
|
CSC 621: Database Systems (3 credits)
This course covers the concepts and structures necessary to design and implement a database management
system. Topics to be covered: data models (entity-relationship and relational), SQL, normalization,
storage structures, enterprise applications and database integrity.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
|
|
CSC 622: Advanced Database Concepts (3 credits)
Topics include stored procedures, triggers, query processing and optimization, web-based enterprise
database applications, transaction management, concurrency control, distributed databases, data mining
and web mining. The course includes programming projects involving SQL.
Prerequisite: CSC 621 Database Systems
|
CSC 623: Data Communications and Networking (3 credits)
Topics include mathematical foundations of data communications, logical and physical organization of
computer networks, the ISO and TCP/IP models, communication protocols, circuit and packet switching,
the Internet, LAN/WAN, client/server communications via sockets, routing protocols, data encryption/
decryption and network security issues.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
|
|
CSC 626: Web Technologies (3 credits)
Topics include organization of Meta-Markup languages, Document Type Definitions (DTDs), document
validity and well-formedness, style languages, namespaces, Transformations, XML parsers, Web Services,
and Web Security Specifications. Course includes programming projects.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 629: Mobile App Design (3 credits)
This course is designed for students who wish to start developing mobile applications on
Android platforms, and through the process understand the concepts relating to Computer Science on
a mobile platform. The course will include the basics of mobile and wireless technology
with Android programming and will cover the most recent version of Android. Students will
learn how to develop feature-rich Android applications
using various development platforms and learn the basic concepts in Computer Science such
as algorithmic thinking, abstractions, logic, flow control, and data representation,
storage and manipulation. The primary language used in the course will be Java.
Prerequisite: CSC 551 Design and Analysis of Algorithms
|
|
|
CSC 643: Big Data and Web Intelligence (3 credits)
The course explores the concepts of big data, the use of Artificial Intelligence data exploration techniques, the map-reduce
parallel computing paradigm, distributed file systems, NoSQL databases, and stream computing engines. The course includes
programming projects on a cluster of Hadoop servers.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 647: Internet of Things (3 credits)
By 2020, the number of smartphones, tablets, and PCs in use will reach about 7.3
billion units. In contrast, the IoT (Internet of Things) will have expanded at a
much faster rate, resulting in a population of about 26 billion units at that
time. The IoT is the network of physical objects that contains embedded technology to
communicate and sense or interact with their internal states or the external
environment. In this course, students will use two of the most popular IoT
platforms (Arduino and Raspberry Pi) to develop their own "things."
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
|
|
|
CSC 648: Distributed Computing (3 credits)
With the growth of technological expansion of computer networking, distributed systems are becoming more and more widespread. A distributed computer system consists of multiple autonomous computing devices that do not share primary memory but cooperate by sending messages over a communication network. This course systematically studies the special problems in distributed systems, including distributed control such as election and mutual exclusion, routing, data management Byzantine agreement, and deadlock handling. The course also introduces several basic parallel/distributed algorithms and typical applications in distributed shared memory, database, file systems, web applications, cloud, and block-chain.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
|
|
|
|
CSC 627: Introduction to Security (3 credits)
Topics include fundamental concepts in confidentiality, integrity, and availability, access control methods, cryptographic concepts,
physical security, malware, computer viruses, privacy-invasive software, malware detection,
network security, web security, security models, software vulnerability assessment.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 628: Advanced Security (3 credits)
Topics include classical cryptosystems, public and symmetric cryptography, key management, digital
signatures, cipher techniques, authentication and federated identity management. Course also covers
concepts relating to cryptovirology, malware, viruses, Trojan horses, worms and other types of
infectors as they relate to network security. Course includes programming projects.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
|
|
CSC 644: Security in Mobile App Design (3 credits)
The course introduces students on how to implement and enforce access and data protection measures for mobile applications
using data encryption standards, VPN policies, and authentication. The focus of the course is on the integration between the
mobile application and remote authentication services. The course include Android programming projects using security specific SDK's.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 645: Introduction to Ethical Hacking (3 credits)
This course introduces students to the basic principles and techniques used in penetration testing,
also known as Ethical Hacking. The course covers the methods used in penetration testing process
and the corresponding remedial techniques while emphasizing the key factors that
differentiate a malicious attacker from an ethical hacker, stressing the importance of being within
legal confines. Students will develop a broad understanding of current cybersecurity
problems by completing projects on the topic of Ethical Hacking.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
|
|
CSC 652: Digital Forensics (3 credits)
This course is a broad introduction to the field of Digital Forensics. It covers various fundamental topics necessary
for digital forensics investigation, and a variety of hardware and software tools that are commonly used during the investigation.
The course begins with foundations of electronic evidence including cybercrime laws, the 4th Amendment, compliance and requirements,
collection and handling, analysis, and reporting. The course also covers fundamentals of file systems with specific details
pertaining to Microsoft FAT file systems. Students will learn two important forensics techniques -file recovery and file
carving-among other things. In addition, basic techniques used in Network-based digital forensics will also be
covered. Finally, Anti-forensics will also be discussed. Hands-on lab activities familiarize students with several
relevant investigation techniques.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 653: Introduction to Social Network Analysis and Modeling (3 credits)
The Analysis and Modeling of Social Networks is a very hot topic in Computer Science. Considering that mobile devices,
such as smartphones and laptops, are physically carried by human beings, the data generated by these devices actually possesses
certain social features. By analyzing the social features and modeling social networks, we are able to design better applications,
in terms of the functionality and efficiency.
This course will include methods for analyzing and modeling the following aspects of social networks: the small-world network models,
social network search algorithms, power-laws and preferential attachment, diffusion and information propagation in social networks,
community detection in social networks, models of network cascades, models of evolving social networks, links and attributes prediction.
In addition, the course will introduce a set of tools for visually presenting and studying different social networks and their unique features.
|
CSC 655: Social Networks Privacy Issues (3 credits)
Since the arrival of the first generation of social networks in the 2000s, online social network platforms have expanded exponentially and many social network-based applications have been designed. However, the massive amount of personal information is stored and used by these platforms and applications, which inevitably causes security and privacy concerns. This course systematically studies the unique features of social networks and their data and applications, discusses the security problems and privacy leakage issues of social networks, and further introduces the cutting-edge techniques to solve those security and privacy problems.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
|
CSC 680: Artificial Intelligence (3 credits)
The course covers fundamental concepts such as role of logic in reasoning, deductive proofs, and blind and informed search techniques. Additional topics may include inductive learning, genetic algorithms, decision trees, planning, natural language processing, game trees and perceptron learning. Course includes programming projects in a suitable language.
Prerequisite: CSC 500 Discrete Structures
|
CSC 685: Advanced Machine Learning (3 credits)
The course will present machine learning algorithms for supervised and unsupervised learning with an emphasis on recent advances in deep learning with neural networks, decision trees, and various stochastic models. Application areas in data science, computer vision, natural language understanding, and engineering optimization will reinforce the covered topics. The course includes several programming projects..
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
|
|
CSC 686: Introduction to Data Science (3 credits)
The course covers the fundamental concepts in data science including mathematical tools needed to analyze large data sets, data visualization, inferential techniques, cloud computation, and applying analytical methods to real-world business and industry data.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 687: Advanced Data Science (3 credits)
The course introduces most recent tools for performing predictive analytics, data visualization, data wrangling, statistical inference, deep machine learning, and software engineering. The main focus of the course is to introduce students to most important aspects of data science by reinforcing writing efficient code, testing, and debugging while working with large software systems. The course includes several programming projects.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
|
|
CSC 630: Introduction to Graphics (3 credits)
The course provides an introduction to the principles of computer graphics. The emphasis will be
placed on understanding how various elements that underlie computer graphics interact in the design
of graphics software systems. Topics include pipeline architecture, graphics programming, 3D geometry
and transformations, modeling, viewing, clipping and projection, lighting, shading and texture
mapping and visibility determination. A standard graphics API will be used to reinforce concepts
and the study of basic graphics algorithms. Students need some proficiency in C language and basic
concepts from Linear Algebra.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 631: Computer Vision (3 credits)
Computer vision is the science of analyzing images and videos in order to recognize or model 3D
objects, persons, and environments. Topics include the underlying image formation principles,
extracting simple features like prominent points or lines in images, projecting a scene to a
picture, tracking features and areas in images and make a mosaic, making an image-based positioning
system, obtaining 3D models from two or more images, and techniques to recognize simple patterns
and objects. The class includes programming exercises and hands-on work with digital cameras and
laser scanners.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 632: Interactive 3D Game Development (3 credits)
This is a technology-based course that uses the latest computer games technology to teach advanced
programming, mathematics, and software development. The course is ideal for students with an
interest in computer games who plan to seek employment in one of the country's more profitable
industries, or students looking for a career in new technologies or software development.
The interactive entertainment industry in the US and throughout the world is entering a new
phase. New technology platforms are forcing existing development firms to diversify.
There are many aspects of game design, development, production, finance, and the distribution
process. This course specializes in the programming and technology aspects of the industry.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 633: Advanced Computer Graphics and Visualization (3 credits)
The goal of this course is to expose students to advanced techniques in modeling and rendering
in computer graphics and visualization. Topics include parametric curves and surfaces, mesh
representation, multiresolution modeling, and mesh simplification, ray-tracing, radiosity and
volume rendering (iso-surface rendering and direct volume rendering), anti-aliasing and animation.
Prerequisite: CSC 630 Introduction to Graphics
|
CSC 634 Computational Geometry (3 credits)
The course covers design, implementation and analysis of data structures and algorithms for
solving geometric problems concerning objects like points, lines, polygons in 2-dimensional
space and in higher dimensions. The course emphasizes the applications of computational
geometry. Topics include overview of geometric concepts, curves and surfaces, data structures
for representing solid models, convex hulls, line segment intersection, multi-dimensional data
structures (kd-trees, quadtrees and BSP trees), and range searching, point location,
triangulations and Voronoi diagrams.
Prerequisite: CSC 551 Design and Analysis of Algorithms
|
|
CSC 610: Software Engineering (3 credits)
The purpose of this class is to teach the process of developing software. It combines a study of
methods, tools, and techniques for creating and evolving software products, with the practical skills
needed to deliver high-quality software products on schedule. The methods that are studied include
requirements, specification, design, implementation, testing, and maintenance. The
course includes a substantial group project.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 611: Human Computer Interaction (3 credits)
User models: conceptual, semantic and syntactic considerations; cognitive and social issues for
computer systems; evaluating HCI; direct manipulation; the model view controller architecture;
widgets and toolkits. Students will design a GUI based application.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 612: Program Verification (3 credits)
Symbolic logic and mechanized deduction; program specification; loop invariants; the proof methods of
Floyd and Hoare; parallel computations; program semantics.
Prerequisite: CSC 551 Design and Analysis of Algorithms
|
CSC 613: Software Testing (3 credits)
A systematic approach to software testing, in context of the software life cycle and as a branch of
software engineering, building on students' prior knowledge of software engineering. Through both the
breadth and depth of its coverage, the course prepares students to make an effective contribution to
software testing as professional software engineers.
Prerequisite: CSC 610 Software Engineering
|
CSC 642: System Management and Maintenance (3 credits)
A course designed to introduce students to the issues and concerns of managing shared systems.
Students will manage a small system and explore mechanisms for maintaining data integrity,
policies for users, record keeping, and system protection.
Prerequisite: CSC 553 Computer Systems
|
|
CSC 671: Instructional Techniques, Computer Science Education (3 credits)
Candidates will learn subject-specific standards for competencies based upon the Computer Science Teachers Association (CSTA) standards. The CSTA academic standards detail a core set of learning objectives providing the foundation for a rigorous K-12 computer science curriculum. The standards introduce the foundation concepts of computer science making them accessible for all learners. Topics will include the following: Algorithms and Programming, Computing Systems, Data and Analysis, Impacts of Computing, Networks and the Internet and Pedagogy.
|
CSC 681: Programming Paradigms (3 credits)
An exploration of the relationships between computational paradigms and the computer languages that
support them. The Lambda calculus and functional programming, resolution and logic based languages,
machine based models and imperative languages. The impact of the computational model on program
structure and language design. Mid-sized programming project will be used to illustrate the concepts.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 682: Numerical Algorithms (3 credits)
Exposition and analysis of numerical methods for modern computers; review of basic concepts in
linear algebra; direct and interactive methods for solving linear and nonlinear problems in
numerical algebra; basic problems in approximation theory, numerical differentiation and
integration; numerical solutions of differential equations; forward and backward error
analysis of algorithms; criteria for comparing the efficiency and suitability of numerical
methods.
Prerequisite: CSC 550 Object Oriented Design and Data Structures
|
CSC 683: Information Theory and Coding (3 credits)
Data encoding and transmission; variable length coding; the Kraft
inequality for noiseless transmission channels; channel capacity;
noisy channels and channel capacity; the Shannon coding theorem;
algebraic coding schemes.
Prerequisite: CSC 500 Discrete Structures or equivalent.
|
CSC 684: Complexity of Computation (3 credits)
P and NP problems; NP-complete classes; concrete complexity and the
P class of combinatorial problems; complexity reduction on graph and
string problems; complexity of algebraic computations.
Prerequisite: CSC 551 Design and Analysis of Algorithms, CSC 554 Theory of Computation
|
CSC 670: Topics in Computer Science (3 credits)
The course introduces students to recent theoretical or practical topics of interest in computer
science. Content and structure of the course are determined by the course supervisor. The special
topics for a given semester will be announced prior to registration. With permission of the
Graduate Director the course may be taken more than once.
Prerequisite: CSC 551 Object Oriented Design and Data Structures or permission of
instructor
|
CSC 690: Internship (3 credits)
The course goals are to gain first-hand experience of the daily activities of professionals in
computer science and related fields, to verify an interest in a particular area of computer
science, to develop and hone skills required for computer science professions, and to establish
contacts outside the academic community who will facilitate a career in computer science.
An internship journal, presentation, and an academic report are required.
Prerequisite: GPA of 3.0 and permission of internship coordinator.
|
CSC 791: Research Project I (3 credits)
Supervised independent research mentored by a graduate faculty member.
Prerequisite: GPA of 3.5 and permission of the Graduate Director
|
|
|
CSC 792: Research Project II (3 credits)
Supervised independent research mentored by a graduate faculty member.
Prerequisite: GPA of 3.5 and permission of the Graduate Director
|
CSC 793: Research Project I/II (6 credits)
Supervised independent research mentored by a graduate faculty member.
Prerequisite: GPA of 3.5 and permission of the Graduate Director
|
|
|
|
|