Computer Science

Karnoutsos Hall, Room 405

The Computer Science Department offers the Bachelor of Science degree in Computer Science, the Computer Science minor program, and the Computer and Information Systems minor program. Students study and master state-of-the-art theories and applications that prepare them for careers in business, industry and education. The study of Computer Science provides each student with a competitive advantage as the knowledge gained is applicable in a wide range of environments.

The Computer Science curriculum is supported by four computer labs dedicated for use by students enrolled in Computer Science programs and courses that fulfill General Education Program requirements. The labs provide an environment where faculty support instructional activities and students can implement projects in required course work. Lab activities include hands-on implementation of special projects and assignments that provide real-world experience. This facilitates the eventual transition to the professional environment or to advanced study in the discipline.


Thomas Jyh-Cheng Liu, Chairperson
Professor of Computer Science
Tatung Institute of Technology, B.S.; University of Illinois at Chicago, M.S., Ph.D.

Morteza Aabollah
Professor of Computer Science
New Jersey Institute of Technology, B.S.E.E, M.S.E.E.; Fairleigh Dickinson University, Ed.D.

Moitrayee Chatterjee
Assistant Professor of Computer Science
West Bengal University of Technology, B.S.; Symbiosis, Post Graduate Diploma in Business Administration, C.P.G.D.B.A.; Texas Tech University, M.S., Ph.D.

Jinrui Cao
Assistant Professor of Computer Science
Dalian Jiaotong Univerisity, B.S.; Hong Kong Baptist University, M.S.; New Mexico State University, M.S., Ph.D.

Jean-Claude Ngatchou
Associate Professor of Computer Science
Yaonde University, M.S.; City College of New York, M.S.; City University of New York, Ph.D.

Abhishek Verma
Associate Professor of Computer Science
New Jersey Institute of Technology, M.S., Ph.D.

Nan Wang
Associate Professor of Computer Science
Xidian University, B.S.; Mississippi State University, M.S., Ph.D.

Connie Yu
Professor of Computer Science
Institute of Computing Techniques, M.A.; Pennsylvania State University, Ph.D.

Various discipline-specific concentrations that will prepare students for multiple fields of employment or areas of additional undergraduate/graduate study are noted below. Course requirements for each concentration are explained in detail. The requirements for graduation, in addition to completion of the major area, are listed on "Undergraduate Degree Requirements."

Computer Science (CS)

CS 1XX Computer Science Transfer Credit (0 Credits)

CS 2XX Computer Science Transfer Credit (0 Credits)

CS 101 Computer Science I (3 Credits)

This course covers fundamental principles of programming with emphasis on the Object-Oriented programming paradigm. The focus is on using programming for problem solving. Topics covered on programming principles include data types, selection and iterative statements, arrays, structures, input/output statements, and functions. Object-oriented concepts include abstract data types, encapsulation, data hiding, inheritance, polymorphism, objects, and classes.

Co-Requisite(s): MATH 175 Enhanced Pre-Calculus or MATH 165 Pre-Calculus.

CS 102 Computer Science II (3 Credits)

This course is a continuation of CS 101 Fundamentals of Computer Science. Topics include program debugging and testing, multidimensional arrays, string processing; searching and sorting.

Pre-Requisite(s): CS 101 Fundamentals of Computer Science I

CS 107 Computers & Information Systems (3 Credits)

This is a general introduction to methods of processing information via modern computer systems. Covered topics include computer system components, primary and secondary storage, input/output devices, system and software development, end user application tools and the modern electronic data processing environment. Students are introduced to the Internet in this course.

CS 115 Microcomputer & Programming I (3 Credits)

This is an introduction to microcomputers and programming. Topics include planning, writing, and documenting programs, control structures, numeric and string variables, arrays, and subroutines.

CS 117 Introduction to Computer Programming and Computing (3 Credits)

This course will provide a gentle, yet intense introduction to programming using Python for highly motivated students with little or no prior experience in programming. It covers the basic techniques, including use of the Python IDE (Integrated Development Environment) and Python program coding. Topics treated include syntax, logic control, loop iteration, IO (Input/Output), classes, libraries and algorithms. Students learn the concepts and skills of programming by designing and implementing a series of computer programs that solve practical problems. The course is designed to prepare students to enter Computer Science program assumes some knowledge of Python upon entering; this course has been specially designed to make sure that concepts important to fundamentals of computer science are covered.

CS 120 Computers and Information Technology (3 Credits)

Course provides an intermediate coverage of PC technology and problem solving. Topics include computer hardware, operations, ethics, and operating systems and environments. Students will gain hands-on skills with applications such as desktop and file management; word processing; spreadsheets; presentation graphics; and Internet browsing, searching, and publishing.

CS 125 Game Programming (3 Credits)

This course provides hands-on experience in game programming and covers the basic techniques, including graphics, events, controls, animations, and intelligent behaviors. Students learn the concepts and skills of object-oriented programming by designing and implementing a sequence of computer games. No prior knowledge in programming and computer games is required.

CS 201 Assembly Language Programming (3 Credits)

This course is designed for those students who desire knowledge of computer assembly language programming with emphasis on the following topics: binary and hexadecimal number systems and including programming of machine instruction sets of addressing formats, instruction formats, arithmetic operations, logical operations and branching in RISC and CISC architectures.

Pre-requisite: CS 101 Computer Science I

CS 202 Discrete Structures I (3 Credits)

This course offers an introduction to math¬ematical concepts and theories used in the study of computer science. It covers topics in propositional and predicate calculus, relations and functions, proof techniques, induction and recursion, and set theory. This course provides the mathematical foundation for reasoning and problem solving in computer science.

Co-Requisite(s): MATH 175 Enhanced Precalculus or MATH 165 Precalculus

CS 203 Discrete Structures II (3 Credits)

The course is a continuation of CS 202 and might include topics such as Boolean algebra, recursion relations, graph traversal algorithms and random number generators.

Pre-Requisite(s): CS 202 Discrete Structures I

CS 204 Computer Organization (3 Credits)

This course covers the foundational concepts of basic computer design by studying five major components of computer organization; processor and central processing, memory, control, input/output and software. The interaction between hardware and software is emphasized. Basic machine instruction sets of assembly language are included.

Pre-Requisite(s): CS 202

CS 206 Concepts of Operating Systems (3 Credits)

This course provides an overview of functionality and design issues in operating systems. This course covers process management; synchronization, deadlock, job scheduling, interrupts, interprocess communications, multitasking, memory management; memory hierarchy, virtual memory, cache, associative, file management, I/O device management, concurrency, protection and security. Case Studies of Unix/Linux, Windows XP and other operating systems are included.

Pre-Requisite(s): CS 102 Computer Science II.

CS 209 Data Structures (3 Credits)

This course covers basic data structures including stacks, queues, lists, linked trees, graphs, and hash tables; this will introduce the role of such data structures in sorting, merging, searching and hashing.

Pre-requisite: CS 102 Computer Science II

CS 210 Fundamentals of Telecommunication and Network (3 Credits)

This course covers data communications concepts, hardware, and networks as they apply to computer systems. Topics include but are not limited to signal concepts, modulation, synchronous and asynchronous transmission, RS 232, multiplexing signals, modems, communication software protocols and network configuration, open system interconnect, and LAN products.

CS 214 Business Applications on the Microcomputer I (3 Credits)

This is designed for students interested in using application software within a business environment. The focus of this course is Microsoft Office. Students learn to use Microsoft Word, Excel, PowerPoint and Access.

CS 215 Business Applications on the Microcomputer II (3 Credits)

This course is a continuation of CS 214. Advanced topics are covered.

Pre-requisite: CS 214 Business Applications on the Microcomputer I

CS 232 Introduction to Data Bases & Discrete Search (3 Credits)

This is a course designed as a non-technical introduction to database concepts and search methods for databases on the Internet. Topics covered may include relational databases, object-oriented databases, and sequential query languages.

Pre-requisite: CS 107 Computers & Information Systems

CS 240 System Design & Analysis (3 Credits)

This is a basic course in information systems, focusing on the System Development Life Cycle (SDLC). Topics include systems analysis, system environments and constraints, performance and processing, control measures, user requirements, hardware requirements, file design, project documentation and system testing.

CS 252 Programming for All in Python and Computer Science Principles (3 Credits)

This course provides a novice friendly hands on experience in computer programming. It covers the basic techniques, including use of the Python IDE (Integrated Development Environment) and Python program coding. Topics treated include syntax, logic control, loop iteration, IO (Input/Output), and algorithms. Students learn the concepts and skills of programming by designing and implementing a series of computer programs that solve practical problems. This course helps learners obtain the fundamental principles of Computer Science, vital in the age of ubiquitous internet and burgeoning AI. No prior knowledge in programming and computer skills is required.

Pre-Requisite(s): CS 120 or CS 125

CS 260 Introduction to Information Assurance (I): Network (3 Credits)

This course presents the fundamentals of cryptography and the principles of security issues in network system. The content of this course provides a practical survey of information assurance about network applications and standards. The emphasis is on applications that are widely used on the Internet and for corporate networks (Intranet).

Pre-Requisite(s): CS 206 or with consent of instructor.

CS 300 Computer Architecture (3 Credits)

Topics for discussion may include arithmetic operations (adders, accumulators, multipliers, dividers), organization and control of computer and microcomputer architecture, machine language and systems principles, microprogramming and microprocessors, hardware-software tradeoffs, parallel computers and distributed processing, array processors, computer networks, registers, interfacing components, bus structures, input/output techniques, and priority interrupts.

Pre-requisite: CS 204 Computer Organization

CS 302 Programming Languages (3 Credits)

Lecture topics typically include examination of the syntactic and semantic features of Pascal, C, Prolog, LISP, and other languages, focusing on data types, lists and trees, language features affecting static and dynamic storage, control structures and data flow, subroutine procedures, block structures and interrupts, run time considerations, string processing with language features such as those available in SNOBOL4 and Perl. (Topics covered may vary considerably from year to year.)

Pre-Requisite(s): CS 209 Data Structures

CS 306 Data Base Design (3 Credits)

This is an introduction to basic terminology associated with computer database technology. Topics covered may include classical data storage and retrieval methods, information needs within the business environment, access methods, data structures, database management systems, database design methodologies, and data normalization.

Pre-Requisite(s): CS 202 Discrete Structures I and 209 Data Structures

CS 309 Introduction to Computer & Network Security (3 Credits)

This course covers network security for the Cybersecurity Program. It will introduce network and internet terminology in information security,information assurance and related legal and ethical issues. The topics span various cybersecurity domains including TCP/IP general concepts, OS identification, scanning, web servers and wireless assets vulnerabilities, cryptography, and network protection.

CS 350 Software Engineering I (3 Credits)

This course embodies the general scientific principles commonly known as software engineering. It discusses the software life-cycle, using a large software system as model. Topics covered include requirements-specification analysis, requirements-type languages and specification checking using mathematical techniques. The design phase is analyzed by considering program design language techniques and fast prototyping. A study of the implementation phase, involving validation and verification methods is included. Maintenance and enhancement techniques are developed.

Pre-Requisite(s): CS 209 Data Structures

CS 351 Software Engineering II (3 Credits)

This course uses the concepts and techniques developed in CS 350 to allow students, working in teams, to develop nontrivial software systems. Completion of a larger project is required.

Pre-Requisite(s): CS 350 Software Engineering

CS 355 Visual Programming (3 Credits)

This course introduces the student to some object-oriented/event-driven language such as Visual BASIC, Visual C++, or Visual J++, focusing on the design of interactive Windows applications and graphical user interfaces (GUI).

Pre-Requisite(s): CS 209 Data Structures

CS 360 Computer Graphics (3 Credits)

This is an introduction to computer graphics hardware and software techniques and applications. Students develop and test graphics algorithms.

Pre-Requisite(s): CS 209 Data Structures

CS 365 Advanced Java Programming (3 Credits)

This course provides an in-depth study of Object Oriented Design (OOD) and advanced Java topics. It presents and applies a "Best Practices" approach to: exception handling, Java Database Connectivity (JDBC), multithreading and synchronization, networking, serialization and marshaling, Remote Method Invocation (RMI), Graphical User Interface (GUI) development using Swing, Enterprise JavaBeans, and server-side programming with servlets and JSP (Java Server pages).

Pre-requisite: CS 102

CS 401 Introduction to Algorithms (3 Credits)

This course teaches techniques for the design and analysis of efficient algorithms. Topics include: sorting; search trees, heaps, and hashing; divide-and-conquer; dynamic programming; amortized analysis; graph algorithms; shortest paths; network flow; computational geometry; number-theoretic algorithms; polynomial and matrix calculations; caching; and parallel computing.

Pre-Requisite(s): CS 202 Discrete Structures I and CS 209 Data Structures

CS 402 Compiler Design (3 Credits)

This course covers the lexical, syntactic, and semantic analysis phases of compilation. Other possible discussion topics include symbol table organization, intermediate code generation, and LL and LR parsing algorithms.

Pre-Requisite(s): CS 209 Data Structures

CS 404 Artificial Intelligence (3 Credits)

This is a survey of concepts and problems in artificial intelligence research. Topics include natural language processing, knowledge representation, and automatic deduction.

Pre-Requisite(s): CS 202 Discrete Structures I

CS 405 Theory of Computability (3 Credits)

This is a survey of theoretical models of computation-notably the Turing machine model, the Markov algorithm model and register machine model-as well as equivalence results relating those models. Considerations of efficiency (complexity theory) are also introduced with an emphasis upon the use of big-O notation to describe the time/space requirements of specific machines. Simulation software is used extensively, thereby enabling students to design and run their own abstract machines. This is an essential course for students interested in pursuing graduate study later.

Pre-Requisite(s): CS 202 Discrete Structures I

CS 406 Expert Systems (3 Credits)

Topics covered in the course include hands-on use of production based, rule-based, and frame-based expert system shells. The class discusses the current limitations of expert systems.

Pre-Requisite(s): CS 202 Discrete Structures I

CS 407 Introduction to Unix/Linux System Administration and Shell Programming (3 Credits)

This course enables students to master the fundamentals of Operating System Unix/Linux and the system administration techniques in shell programming. Topics include Linux/Unix Operating Systems, Basic Commands in Linux/Unix, File System, Security and File Permission, Borne Shell (BASH), Shell programming with Perl and Shell commands.

Prerequisite(s): CS 101

CS 408 Introduction to Cryptography (3 Credits)

Cryptography provides important tools for ensuring the privacy, authenticity, and integrity of the increasingly sensitive information involved in modern digital systems. Nowadays, core cryptographic tools, including encryption, message authentication codes, digital signature, key agreement protocols, etc., are used behind millions of daily online transactions. In this course, we will unveil some of the "magic" of cryptography in this course. Modern Cryptography uses mathematical language to precisely pin down elusive security goals, design primitives and protocols to achieve these goals, and validate the security of designed primitives and protocols using mathematical proofs based on clearly stated hardness assumptions. Therefore, to learn cryptography, it is essential to understand its mathematical underpinning. In this class, we will see the inner working of cryptography for several core cryptographic tools, from encryption, to message authentication codes, to hash functions, to digital signatures, etc.

Prerequisites: MATH 175

CS 409 Introduction to Data Science (3 Credits)

The course on Introduction to Data Science provides an overview of Data Science, covering a broad selection of key challenges in and methodologies for working with big data. Topics to be covered include data collection, integration, management, modeling, analysis, visualization, prediction, and informed decision making, as well as data security.

CS 410 Telecommunications & Networks (3 Credits)

This is a study of data communications and networks. Topics include signal concepts, modulation, synchronous and asynchronous transmissions, multiplexing and multiplexers, modems, controllers, error detection and correction, communication software, protocols and network configurations.

Pre-Requisite(s): CS 204 Computer Organization

CS 417 Object-Oriented Methodologies (3 Credits)

This course introduces students to object-oriented design and analysis contrasted with traditional approaches. The course focuses on the issues involved in the transition of object-oriented design.

Pre-Requisite(s): CS 209 Data Structures

CS 420 Cloud Security with Artificial Intelligence Approach (3 Credits)

This course focuses on instructing the knowledge of the cloud security, which is an important branch of cybersecurity, through a variety of perspectives in the field of Computer Science. This course emphasizes the role of the mobile cloud computing in applications as well as the interconnections between facilities within a networking environment using Artificial Intelligence (AI) approach. After having taken this course, students should be able to have a comprehensive understanding in cybersecurity, cloud security, and AI from basic concepts to advanced framework or models. A group of knowledge points covered by this course include privacy threats in mobile cloud and mobile apps, cyber incidents in cloud computing, security issues in Internet of Things (loT), data protections in smart phones, and buffer overflow attacks in cloud systems, security aware hardware configurations, secure data storage, and privacy preserving mobile cloud systems. Students learn the concepts and skills of security and AI by designing and implementing a series of programs that solve practical problems.

Pre-requisite: CS 101 and CS 209

CS 423 Introduction to Deep Learning and Applications (3 Credits)

This course provides the rudimentary concepts of theoretical background on Deep Neural Networks and competence to create a DL model, train, validate and test the model so that they can be deployed to solve real world problems.Deep learning (DL) has become an emerging and powerful tool in the field of Artificial Intelligence (AI). The potential of DL has been widely utilized in academia and industries alike for object detection , game bots , natural language processing , speech recognition and business applications. To prepare the students to obtain the knowledge, skills, and abilities to develop DL based solutions for futuristic AI, this course focuses on train the students with the necessary mathematical background and programming expertise in DL models, data processing and model optimizing experiences. This course balances the theoretical background on DL as well as the essential technical skills to build innovative solutions.

Pre-Requisite(s): CS 209, MATH 140 and MATH 192.

CS 430 Internet Multimedia Programming (3 Credits)

CS 492 Independent Study in Computer Science (3 Credits)

CS 505 Microcomputers/Elementary Teacher's I (3 Credits)

This course introduces students to the general microcomputer configuration and the essentials of programming. Topics include microprocessors, I/O devices, special packages, and software.

CS 506 Microcomputer Progrmng for Elementary Teachers II (3 Credits)

This course serves as an intermediate course to enable elementary school teachers to use microcomputers in the classroom and to reinforce what students have learned in about the essentials of programming.

CS 510 Microcomputers/Secondary School (3 Credits)

This course introduces secondary education majors and high school teachers to microcomputers.

CS 511 Micro Computers Secondary Teacher's II (3 Credits)

This course serves as an intermediate course to enable high school teachers to use microcomputers in the classroom and to reinforce what the students have learned about the essentials of microcomputers.

CS 521 Using Internet In Education (3 Credits)

CS 523 Using Internet in Education:Introduction (1 Credit)

CS 524 Using Internet in Ed:Intrm (1 Credit)

CS 525 Using Internet In Education:Curriculum (1 Credit)

CS 530 Data Management System (3 Credits)

NJIT - CS631 Acquaintance with fundamental notions of relational database technology. Mathematical properties and usage of database programming languages. Methods of database design and conceptual modeling. Methods of physical storage for database information. Fundamental notions of concurrency control and recovery in database systems.

CS 547 Microcomputer Education I:IBM (3 Credits)

CS 551 Data Communications (3 Credits)

NJIT course - CS 651 The objective of this course is to introduce the very exciting and extremely useful area of Communication Networks. We will cover a wide variety of topics including Network Architectures, Analog and Digital Transmission, Error Detection and Correction, Data Link Protocols, Multiplexing and Switching, DSL, Cable and Fiberoptic Networks, SONET/SDH, Local Area Networks (LANs), Virtual LANs, Wireless LANs, Cellular and Satellite Networks, Ad Hoc and Sensor Networks, Router Design and Routing Algorithms, Frame Relay, ATM, MPLS, Web Caching, CDNs! , Peer-to R>Performance Analysis and Design.

CS 552 Computer Networks-Architectures, Protocols and Standards (3 Credits)

NJIT course CS652. Intensive study of various network architecture and protocol standards; with emphasis on the Open Systems Interconnection (OSI) model. Topics include: analog and digital transmission, circuitand packet switching, the Integrated Services Digital Network, (ISDN), Frame Relay, Broadband ISDN, Cell Relay, Sonet, Local Area Networks (CSMA/CD, Token Bus, Token Ring, switched and isochronous Ethernets), Metropolitan Area Networks, (FDDI, FDDI-II, DQDB), wireless and satellite networks, synchronization and error control, routing and congestion control, X.25 standard.

CS 556 Internet and Higher Layer Protocols (3 Credits)

NJIT - CS 656 The course provides a foundation of knowledge of the Internet and its protocols. Topics include: Addressing, Routing and Forwarding, Classless Interdomain Routing, the IP and ICMP protocols, the UDP and TCP protocols, the layering models in OSI and in TCP/IP, IGMP, Routing methods (RIP, OSPF, BGP), The Domain Name System, The World Wide Web and http. In addition, students will be made familiar with use of a packet sniffer (such as tcpdump or ethereal) and with tools such as ping, nslookup and traceroute. Students will develop the detailed knowledge of packet headers needed to understand output of packet sniffers.

CS 559 Advanced Systems Analysis and Design (3 Credits)

Course focuses on the system analysis and design techniques employed in the development of software applications. Topics include software process and process models (e.g. Rational Unified Process), project management, structured and object oriented analysis, system design, quality systems, system and software architecture, design patterns, re-use and component based design, change control and configuration management. Analysis and design will be covered primarily from an object oriented perpective. Students will read selected material from literature, actively participate in discussions, labs and exercises in addition to participating in projects that involve analysis and design for real world problems. (NJIT- IS 663)

CS 576 Requirements Engineering (3 Credits)

NJIT - IS 676 Prerequisites: IS 663 (Advanced System Analysis and Design) or CS 673 (Software Design and Production Methodology) or equivalent project experience in the field. Theory, principles, and practical application of the methodologies and tools of requirements engineering. The focus is development of large software systems and the integration of multiple systems into a comprehensive, domain dependent solution. All aspects of requirements engineering will be covered, including problem analysis, requirements specification techniques and tools, and specification of functional and non-functional requirements. Related technologies like domain analysis and pre-planned systems integration are also discussed.

CS 577 Information System Principles (3 Credits)

NJIT - IS 677 Reviews the role of information systems in organizations and how they relate to organizational objectives and organizational structure. Identifies basic concepts such as the systems point of view, the organization of a system, the nature of information and information flows, the impact of systems upon management and organizations, human information processing and related cognitive concepts. Introduces various types of applications that are part of information systems. The course focus is on management information systems.

CS 599 Data Mining (3 Credits)