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 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, such as C++. Use of control structures, functions, and arrays. Objects are introduced.
APCT 232/ 234 Computer Science II Lec/ Lab Continuation of APCT 231. Emphasis on object oriented programming (such as C++) Topics include multi-dimensional arrays, searching and sorting algorithms, data abstraction, file operations including random access files, classes, pointers, and introduction to linked lists, stacks and queues.
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 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 311/ 313 Computer Organization Lec/ Lab Provides foundations of digital design, including Boolean Algebra, nondecimal number systems; basic digital elements using integrated logic modules, and logic design.
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 Architecture Examines arithmetic and control units, system aspects of computer memory and access control functions, input-output, and system organization.
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 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 programming in C or C++. Basic mathematics (geometry and transformation) and basic linear algebra (such as matrix multiplication) are also required skill sets. 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 495 Senior Seminar This course is designed as a capstone experience to provide identifying the cutting edge technologies and a broader context for knowledge in the field of Computer Science & Information Technology. Students are required to do in-class presentations by reading current research or survey papers.
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.