CSIT University of the District of Columbia School of Engineering and Applied Sciences Dept. of Comptuer Science and Information Technology

Course Descriptions

Undergraduate Courses (CSIT)

Course Number Course Title Description
APCT 110/111 Intro to Programming (Lec+Lab) Introduction to program development using a programming environment (i.e., Python). Topics covers a basic understanding of understanding of programming concepts and constructing numbers, strings, assignments, sequential vs. selective execution, nesting, loops, functions, arrays, reference parameters, file streams, etc.
APCT 115 Foundations of Computing Survey of computer science topics. Features applied concepts of iteration, induction, and recursion; functions and relations; propositional logic and predicate logic; graph and tree data structures; Boolean and computer logic; finite state machines; and algorithmic problem solving.
APCT 231/ 233 Computer Science I (Lec+Lab) Covers algorithm and program development using a higher-level programming language (i.e., Java). Use of control structures, functions, and arrays. Objects are introduced.
APCT 232/ 234 Computer Science II (Lec+Lab) Continuation of APCT 231/233. Emphasis on the object oriented programming (i.e., Java) Topics include multi-dimensional arrays, searching and sorting algorithms, data abstraction, file operations including random access files, classes, and introduction to linked lists, stacks and queues. Prerequisite: APCT 231/233.
APCT 341 Advanced Web Development This course will focus on introducing advanced web programming languages such as PHP, JavaScript, ASP .Net, and ColdFusion. It mainly focuses on understanding advanced web-development techniques that use databases to create web contents.
CMOP 131/ 132 Computer Networking Fundamentals (Lec+Lab) This course is a study of local area networking concepts through discussions on connectivity, communications and other networking fundamentals. The course is designed to prepare the student to be successful in completing industry network fundamental certification exams.
CMOP 231/ 232 Wireless Local Area Networks (Lec+Lab) Fundamental concepts of Local Area Network architecture and protocols. Topics include (1) basic concepts needed to design, configure, and implement Local Area Networks and (2) the evolution of Ethernet, Fast Ethernet, Gigabit Ethernet, ATM and wireless LANs (WiFi).
CMOP 235/ 236 Introduction to WebPage Development and HTML Lec/ This course in computer science develops basic skills in webpage development using the HTML programming language. It introduces the process of developing a webpage by explaining two broadly known programming languages such as HTML, XHTML, CSS, and JavaScript.
CSCI 135 Scientific Programming Through this course, students will learn how to solve their computation problems in C/C++-language using numerical methods. Service Course to SEAS
(CAUTION: All CS and IT students are not allowed to take this course)
CSCI 241 Data Structures This course covers the design and implementation of data structures including arrays, stacks, queues, linked lists, binary trees, heaps, balanced trees and graphs. Other topics include sorting, hashing, memory allocation, and garbage collection.
CSCI 251/ 253 Assemblers & Systems (Lec+Lab) Introduces assembly and machine level software concepts and applications. It will include the understanding of instruction sets, addressing techniques, input/ output programs, data representations, and logic.
CSCI 306 Computer Ethics and Laws A survey course that reviews implications and impacts of computing technology throughout the world. The course examines the policies that relate to the use of computer technology, such as, privacy and national security, shared data and information, copyright and intellectual property, legislative and constitutional issues, changing labor force composition, and professional ethics.
CSCI 308 Advanced Object-Oriented Programming This is an advanced programming that focuses on introducing object-oriented programming language (i.e., C++). Specially, it covers object-oriented principles such as classes, interfaces, inheritance, and polymorphism. Also, various programming concepts such as program structure, block, storage types, console and file I/O, functions, arrays, strings, pointers, call-by-reference, call-by-value, and dynamic memory allocation will be discussed. Prerequisite: APCT 232/234.
CSCI 315 Unix and System Programming This course focuses on introducing tolls for program development and efficient use of a workstation environment. Topics include UNIX commands, emacs environment, X-windows, separate compilation of large projects, user defined libraries, makefiles, intelligent debugging, perl, HTML, rcs/sccs, tcl/tk and assorted additional topics.
CSCI 317 Multimedia Programming & Design This course will address the topics of multimedia programming and design such as scripting language, image editing software, the development of games, and dynamic applications.
CSCI 325 Organization of Programming Language The study of the organization of programming languages, especially the run-time behavior of programs; formal study of programming languages specification and analysis; continuation of the development of problem analysis and solution, and of programming skills.
CSCI 341 Software Engineering Explores issues in design, development, documentation, coding and implementation of large software projects. The tools and techniques required for all stages are addressed. The functional requirements and decomposition of model problems are discussed. Validation, test and maintenance of large software systems are also covered.
CSCI 342 System & Network Administration This course covers system administration, network planning, routine system maintenance, firewalls and security, Internet connectivity, system optimization, troubleshooting and scripting languages.
CSCI 343 Database Administration This course introduces database management systems design philosophy and design considerations for satisfying both availability and integrity requirements.
CSCI 345 Human Computer Interaction This course provides an introduction to the field of human-computer interaction (HCI) that concentrates on the study of interaction between human (users) and computers. From this course, students learn a body of knowledge and a practical set of well known, tested, and necessary skills related to HCI.
CSCI 351 Computer Networks This course aims to provide data communication fundamentals and the principles governing computer communication networks. It provides an understanding of the components of networks, how they are connected as well as the basics in the design and implementation of network protocols. A number of techniques and protocols with respect to addressing, subnetting, routing, multicasting, and the interconnection of heterogeneous networks are discussed.
CSCI 352 Network Security This course provide a comprehensive overview of fundamental network security concepts, techniques, and issues such as types of attacks computers/networks are vulnerable to, attacker profiles, and hardware/software defense solutions available.
CSCI 353 Information Security This course provides an in-depth understanding of general information security fundamentals, organization and operation security procedures and policies, handling of security incidents, security audit principles and practices, security ethics, and computer forensics.
CSCI 398 Advanced Applied Programming The course explores developing applied applications for various computing environments. This course will cover programming language(s) that is not covered in the CS I and CS II.
CSCI 410 Theory of Computing Introduction to the theory of computing including: Regular languages, finite automata, transition graphs, Kleene's theorem. Finite automata with output. Context-free languages, derivation trees, normal form grammars, pumping lemma, pushdown automata, and Turing machines.
CSCI 412 Operating Systems In this course theoretical and implementation aspects of operating system design are presented from both developer and user perspectives. Parallelism or concurrency aspects are explained using the concepts of process management, synchronization, deadlocks, job and process scheduling. Detailed techniques of real and virtual storage management are discussed for a variety of processing environments such as multiprogramming, multi-processing, etc.
CSCI 414 Introduction to Artificial Intelligence This course will introduce the basic principles, techniques, and applications of Artifcial Intelligence. The course also touches on more recent developments in natural language processing, visual processing, machine learning, robotics, and philosophical foundations.
CSCI 415 Computer Organization and Architecture Examines arithmetic and control units, system aspects of computer memory and access control functions, input-output, and system organization.
CSCI 417 Functional Programming The course covers functional programming language (such as Scala). It approaches programming as the construction of definitions for pure functions that act upon immutable data structures. The course focuses on problem solving techniques, algorithms, data structures, and programming notations appropriate for the functional approach.
CSCI 421 Machine Learning The veracity, velocity, volume and variety of data available since the early 90's has posed a major challenge to the traditional data analytical methodologies. Machine learning (ML) has the capability of making a computer to 'sniff' through these large piles of data, learns its pattern and discovers hidden knowledge. Thus, ML enhances accurate prediction, pattern recognition and knowledge discovery. This class will a combination of the theoretical and empirical approach to machine learning.
CSCI 422 Introduction to Deep Learning Deep Learning is an emerging field of computer science that is built on the success of machine learning. It uses a high-level abstraction to improve the predictive capability of machine learning. This class will a combination of the theoretical and empirical approach to deep learning paradigms.
CSCI 424 Introduction to Compiler Design Studies programming language design, error detection, and recovery techniques. Lexical analysis, syntactical analysis, symbol table handling, semantic analysis, code generation, and code optimization, compiler-compilers are examined.
CSCI 434 Analysis of Algorithms Introduction to theoretical algorithm analysis, including study of growth rates of functions, worst-case and average behavior, and divide and conquer. Topics will include graphs, strings and dynamic programming.
CSCI 435 Digital Image Processing This course will address a theoretical and practical introduction to the area of digital image processing including image representation, formats, segmentation, edge detection, convolution, compression, etc.
CSCI 436 Parallel and Distributed Computing This course covers the fundamental concepts of multithreaded, parallel and distributed computing by emphasizing the practice and application of parallel systems, using real-world examples.
CSCI 441 Digital Forensics This course will teach the concepts in digital/computer forensic analysis and Internet Investigations. Specifically, this course focuses on understanding various mechanisms to detect cyber-crime, preservation of evidence, government regulations, etc. In addition, legal and technical aspects of study to achieve a balance similar to that encountered during common cases in which computer forensics are employed.
CSCI 451 Advanced Network Management This course will address the principles of network architecture and layering, multiplexing, network addressing, routing and routing protocols.
CSCI 452 Database Systems Design This course covers database design, entity-relationship and relational model, relational algebra, query language SQL, storage and file structures, query processing, database system architectures.
CSCI 453 Secure Software Engineering This course provides a detailed explanation of common programming errors and describes how these errors can lead to software systems that are vulnerable to exploitation. The course concentrates on security issues intrinsic to software systems.
CSCI 454 Computer Graphics This course provides an introduction to the theory and practice of computer graphics. Students are required to know basic mathematics (geometry and transformation) and basic linear algebra (such as matrix multiplication). In this course, the standard OpenGL library is going to be used to illustrate graphics theories and to show practices of computer graphics applications.
CSCI 455 Cryptography This class will provide the student a basic understanding of cryptography through algorithms. In addition, this class will cover the necessary materials including: data structures, basic algorithms, computational complexity, elementary number theory, and basic cryptography including private key cryptosystems and public key cryptosystems.
CSCI 456 Visualization This course provides understanding of general visualization techniques, the differences between scientific visualization, information visualization, and visual analytics, visual perception and cognitive issues when creating visual elements, and evaluation methods.
CSCI 478 Big Data Analysis This course provides understanding of big data analytics approaches including hadoop, mapreduce and data mining on big data.
CSCI 490 Special Topics in CSIT A comprehensive treatment will be presented on one or more advanced areas in computer science.
CSCI 497 Independent Study This course provides an opportunity for students get research experience on the analysis of selected problems or topics in computer science and information technology. Topic must be arranged with instructor and approved by department chair before registering. Notes: Can be repeated if topics substantially different with a maximum 6 credits.
CSCI 498 Senior Project I Students learn emerging topics and vocabularies in the discipline and problem-solving skills through capstone projects. This course teaches students how to continuously explore new ideas through their post-graduation life.
CSCI 499 Senior Project II Students learn project management skills and intensive writing skills, and use the skills to professionally present the project results of Senior Project I.