Computer Science

Karnoutsos Hall, Room 405
201-200-3291

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.

 

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.

Thomas Jyh-Cheng Liu
Professor of Computer Science
Tatung Institute of Technology, B.S.; University of Illinois at Chicago, 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.

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 mathematical 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.

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 547 Microcomputer Education I:IBM (3 Credits)

CS 599 Data Mining (3 Credits)