Computer Science BS (Florham)
The Bachelor of Science in Computer Science program is designed to give students broad knowledge in the theoretical as well as practical aspects of computer science. The program provides graduates with a solid foundation in the fundamentals of Computer Science, preparing them for a professional career in the field as well as graduate studies. The skills and knowledge that students acquire will provide them with the ability to adapt and grow in the workplace which is continually changing with advances in technology and globalization.
Students can choose from three different concentrations as part of their major: Cybersecurity, Game Development, and Data Science.
Program Learning Outcomes
Learning outcomes for Computer Science majors:
- Problem Solving – Identify problems and formulate solutions. Apply problem-solving skills, algorithmic thinking, and knowledge of computer science.
- Mathematical & Algorithmic Modeling – Apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices.
- Software Development & Design – Analyze, specify, plan, design, implement, test, and evaluate computing-based solutions. Document work at all stages of software development in a variety of professional contexts.
- Systems Design – Identify and analyze structures and mechanisms of a computer system including security issues and adapt to different computing and programming environments.
- Teamwork and Collaboration – Function effectively in a team for group projects.
- Effective Communications – Present ideas and communicate information clearly and logically.
- Legal and Ethical Responsibilities – Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles. Understand social issues and responsibilities.
- Professional Development – Identify the skills necessary to become a lifelong learner in the rapidly evolving field of computer science, prepare for career and/or graduate school
NOTE: All students are required to complete the General Education Requirements of their campus in fulfillment of their Bachelor’s degree requirements.
- CSCI1205 Introduction to Computer Programming
- CSCI2215 Introduction to Computer Science I
- CSCI2216 Introduction to Computer Science II
- CSCI2255 Discrete Structures
- CSCI2233 Data Structures and Algorithms
- CSCI3268 Database Systems (excluding cybersecurity concentration)
- CSCI3371 Modeling and Simulation or MATH3300 Statistics I
- CSCI3304 Computer Organization
- CSCI3278 Operating Systems
- CSCI3315 Software Design
- CSCI4391 Senior Project I/CSCI4392 Senior Project II or CSCI4498 Computer Science Internship
Computer Science electives
Five additional courses to be selected from the 3000 or higher-level offerings in computer science (CSCI designation).
Mathematics required courses
- MATH1107 Precalculus
- MATH1203 Calculus I
- MATH2202 Calculus II
- MATH3220 Linear Algebra (or)
- MATH3318 Differential Equations
- Mathematics Elective (3 credits)
One additional course to be selected from the mathematics offerings (MATH designation) above 2000.
Physics required courses
- 8 credits of cognate Physics courses
Students can choose to pursue one of three concentrations, Data Science, Game Development, or Cybersecurity.
The demand for cybersecurity professionals is high and is expected to grow even more in the coming years in both the public and private sectors. Cybersecurity professionals are needed to protect computer networks and systems in the financial, communication, energy and transportation industries as well as in the government, against cyber-attacks.
The National Security Agency (NSA) and the Department of Homeland Security (DHS) have designated Fairleigh Dickinson University as a National Center of Academic Excellence in Information Assurance Education (CAE/CDE) for the academic years 2012 through 2015, which was recently renewed for the period 2015 through 2020.
The information assurance (IA) academic program described on this web page helps impart the skills and training needed to defend America’s cyberspace.
Our CyberSecurity curriculum has been designed to lay a solid foundation in computer science and mathematics. This concentration for the computer science major has been based on carefully chosen courses in the Computer Science, Mathematics and Physics department and is further strengthened by requiring courses in network and data security. There is a provision for internships that will provide practical experience in the field. The Florham Campus enjoys the proximity of several computer science and information technology companies in the area and a number of CS and Mathematics students have had internship positions with these organizations. The department will continue to build and strengthen ties with these organizations with a view to expanding experiential learning opportunities for the students in the field of cybersecurity.
Courses in this concentration will cover a range of topics from an overview of Computer Security, Foundations – Access Control Matrix, Policy – Security Policies, Confidentiality Policies, Integrity Policies, Hybrid Policies, to Implementation – Information Hiding Techniques – Steganography, Digital Watermarking, Cryptography, Fingerprinting, Key Management, Cipher Techniques, Authentication, Access Control Mechanisms, Confinement Problem, User and System Security, Data Security, Copyright, Digital Certificates, Digital Rights Management.
A Certificate of Completion of a NSA and DHS designated CAE/CDE program of study is awarded to eligible students who complete the B.S. degree in Computer Science with a Concentration in Cyber Security.
In addition to the required Computer Science courses, students in the concentration take the following Computer Science courses (* CSCI3158 & CSCI3870 are two newly introduced cybersecurity courses and are required in the concentration effective Fall 2020):
- CSCI3157 Cyber Security
- CSCI3666 Data Communication and Computer Networks
- CSCI3355 Intro to Cryptography
- CSCI3869 Network Security
- CSCI3158 Information Security Design and Management
- CSCI3870 Security Regulations, Detection and Forensics
“The National Security Agency (NSA) and the Department of Homeland Security (DHS) have designated Fairleigh Dickinson University as a National Center of Academic Excellence in Information Assurance Education (CAE/CDE)”
US Department of Homeland Security
National Security Agency
A Certificate of Completion of a NSA and DHS designated CAE/CDE program of study is awarded to eligible students who complete the B.S. degree in Computer Science with a Concentration in Cyber Security.
| Center for Cybersecurity and Information Assurance | Homeland Security News Wire |
We are now witnessing a new era in modern information technology, namely, the era of Big Data. Huge amounts of data are continuously generated every minute. Data sources range from social networking sites, stock trading sites, news agencies, insurance companies, and search engines, to sensors in meteorological and climate systems, patient monitoring systems, and acquisition and control systems that can be found in cell towers, cars, airplanes, and power plants. With these enormous amounts of data, systems and techniques are needed to extract knowledge, information, and patterns for prediction, forecasting and decision-making purposes.
As an example of the amounts of data that is being generated, a recent study estimates that Google receives over “2 trillion searches per year which amounts to 3.8 million searches per minute, 228 million searches per hour, and 5.6 billion searches per day.”
In addition to the required Computer Science courses listed above, students in the concentration take the following Computer Science courses:
- CSCI3269 Introduction to Data Mining
- CSCI3270 Introduction to Machine Learning
- CSCI3998 Artificial Intelligence
The gaming industry is doing remarkably well. According to Game Developer Research, there are about 45,000 employees in the field earning an average salary of $93,000. The Bureau of Labor Statistics predicts that the growth of employment in software engineering, of which game development is a part, will be about a third in the next decade.
The demand for game developers comes from a variety of industries including entertainment, education, government, military, and consumer products.
The game development concentration at Fairleigh Dickinson University provides students with the technical skills that are needed in the gaming industry.
The game development curriculum has been designed to lay a solid foundation in computer science and mathematics with carefully chosen courses in the computer science, mathematics, and physics departments as well as the department of visual and performing arts. The concentration is designed based on guidelines provided by IGDA, The International Game Developers Association.
Students planning to major in computer science with a concentration in game development will take courses in computer science, mathematics and animation. The concentration prepares students for a career in gaming as well as a career in computer science. Students will take special courses that have been designed for this concentration as well as courses in animation and game design.
In addition to required Computer Science courses, students in the concentration take the following:
- CSCI3389 Human Computer Interaction
- CSCI3998 Artificial Intelligence
- CSCI3388 Introduction to Game Development
- CSCI4488 Advanced Game Development
Two cognate electives to be selected from the following animation courses:
ANIM1650 By studying the evolution and history of video games, students learn to plan the visual and interactive content, goals, gameplay and the rules of their own game ideas. This course also teaches how art specifications can conflict with technical constraints and how some ideas might be impractical to build. Students will write in depth game design documents where elements such as story, setting, character development, logical flow and levels are planned and unforeseen issues are dealt with through modification of the paper design based on class critiques and feedback.
ANIM2270 This class teaches digital sculpture by learning how to create ultra-realistic, life like 3D characters using ZBrush. The focus is on planes, anatomy, form, rhythm and proportion while learning how to add a high level of detail to polygonal meshes utilizing the application tools. Digital sculpting techniques and texture painting are discussed and taught through a variety of demonstrations, exercises and in depth assignments.
ANIM2285 This course teaches how to design, create and import 3D models into a game mesh renderer that mimics the setting found in today's popular game engines. Learn to create and organize asset libraries and properly assign textures and materials to those elements. Convert texture layers created in graphics programs to normal maps and other types of maps, such as ambient occlusion and cavity maps, which are necessary for producing fast and efficient high-quality game renderings.
ANIM2500 This course teaches the basic of 3D animation, including physics, substance, reaction and force. Topics include keyframing, function curves, motion paths, dope sheets, aesthetics and limited special effects. After first sketching and refining storyboards that communicate their ideas, students move on to the computer phases of the projects. They are expected to produce animation that emulate real world physics and as well as exhibiting mood and symbolism. Everyone in the class participates in critiques of their own, as well as their classmate's work.
ANIM3330 This course focuses on taking all aspects of 3D modeling, lighting and texturing learned in previous courses to a higher level. By creating detailed 3D environments students gain a greater understanding of the software tools and how to manipulate the complex details of each to improve the visual aesthetics of their finished renders. How to see the flaws and identify areas of improvement in their own works as well as their classmates' pieces in discussed in class critique sessions.
ANIM3350 This course teaches how to use the Unreal game engine, which is a unified suite of tools for constructing every aspect of video games. Students will design and produce original 3D gameplay by integrating their ideas into interactive prototypes and simulated 3D environments. Other topics include rendering, UI, level building, animation, visual effects, physics, and asset management.
ANIM3450 Students learn to integrate their game ideas using Unity's powerful rendering engine. This course teaches how to use Unity's animation system to bring characters and objects to life inside of a gaming environment. Students also utilize the tools provided to create interactive 3D and 2D graphic content while learning how to reduce the time needed to create visually stunning games. The focus of this course is on how to assemble scenes used in creating games containing high quality visuals, audio and realistic action that performs well on any platform.
CSCI1205 An introduction to computer programming using the C# language with emphasis on good software engineering practice and basic computer-science concepts. Topics include algorithm, design, top-down design,forms and controls, decicion structures, loops, methods, arrays and lists.
CSCI2215 Introduction to computer hardware and software, their interaction and trade-offs. Essentials of a computer organization and arithmetic, programming languages, assemblers, compilers and interpreters, I/O devices, operating systems, databases and files. Basic ideas in the areas of computer networks, system organization, computer theory, and security. Foundation for more advanced courses.
CSCI2216 Advanced C++ programming constructs and features will be covered including structured data, file operations, advanced objects and classes, exceptions, and templates.
CSCI2233 This course provides an introduction to data structures and algorithms, including their design, analysis and implementation. This course will introduce algorithmic analysis tools to study the behavior of algorithms associated with various data structures including lists, sorted lists, Stacks, Queues, Deques, Trees, Heaps and Priority Queues, Hash tables, Search Trees, Sorting, Selection, Graph Algorithms, and B-trees. Students will be introduced to algorithms design techniques including divide-and-conquer, greedy approach, backtracking and dynamic programming.
CSCI2255 Set theory, algebraic structures. Boolean algebra and propositional logic, graph theory and other aspects of combinatorial mathematics.
CSCI3157 Computer Security is an important topic in today's world, as computers (and now computer networks) are ubiquitous. Data Security is an important aspect of Computer Security. One of the hot new topics in Computer Data Security Area is related to the protection of copywrited data for e-commerce applications over the Internet. This course covers several topics in Computer Data Security with emphasis on intellectual property protection, digital rights management and digital watermarking, etc.
CSCI3158 Understanding the interaction between security and system usability and the importance for minimizing the effects of security mechanisms is an important objective of this course. Furthermore, the course will cover vulnerabilities, threat modeling, risk assessment and risk management including incident response and disaster recovery planning. Students will learn software assurance and security principles including security life cycle, process management, data security, security models, access control, session, exception and security mechanism. Counter measure, tools and techniques involved in mitigation strategies will be covered as well.
CSCI3268 Overview of the function and architecture of database systems. Study of storage structures and their implementation. Survey of the current types of data models. Examples of data definition and data manipulation languages. Specific database management systems will be studied to support the data base concepts.
CSCI3269 This course introduces the fundamental concepts of data mining. Students will gain an in depth understanding of algorithms in the field, and will learn how to prepare data for learning and classification. Topics covered include data processing, classification, cluster and outlier analysis, and text mining. Students will work on projects for developing classification systems.
CSCI3270 This course introduces the fundamental concepts of machine learning. Topics covered include support vector machines, kernel methods, boosting, on-line learning, multi-class learning, ranking, repression and reinforcement learning. Students will work on projects implementing algorithms discussed in class.
CSCI3278 Operating system as machine virtualizer and resource manager. Management of parallel processes, concurrency and synchronization. Main memory management; virtual memory. Process management. Secondary storage management. Performance measurement.Distributed systems. System security.
CSCI3304 Fundamentals of logic design and organization and structuring of major hardware components of computers. The mechanics of information transfer and control in a digital computer system. Spring
CSCI3315 An introduction to the principles of formal software design. Topics include software requirements generation, system specification, program development techniques, programming language issues, abstraction, information hiding, structured analysis, program documentation, testing, maintenance, reliability and security. The course will use a number of programming and writing projects and case studies to reinforce the concepts discussed.
CSCI3355 Cryptography is the branch of mathematics that studies the design of systems for communication over non-secure channels. It uses ideas from number theory and abstract algebra to cover topics from classical cryptosystems (ciphers) to 1970?s breakthroughs such as Diffie-Hellman?s key exchange and RSA cryptography (public key) to the more recent methods of elgamel and elliptic curves.
CSCI3371 Definition of systems. Input, output and state variables. Continuous and discrete dynamical systems. Differential equations and their use in modeling. The CSMP language and its use.
CSCI3388 Introduces students to game programming techniques, how to use a game library, programming input devices, 3D game programming, theory and design, and bitmap handling through programming.
CSCI3389 Human-Computer interaction integrates the fields of computer science, cognitive psychology, arts and design. This course is an introduction to the principles of human-computer interaction, user interface design, and usability analysis of systems. Students will learn about the user-experience process lifecycle, contextual inquiry, contextual analysis, design thinking, Ideation, sketching, design production, low and high fidelity prototyping, empirical evaluation and feedback, and affordances. Students will apply these principles in weekly activities, assignments and a final project.
CSCI3666 Data communications, communication hardware technologies, local area and long-haul network, circuit and packet switching, computer and network hardware interface, network architecture protocol, transport protocols, network layering architecture, performance issues, reliable delivery over unpredictable channels, virtual circuits, client and server model, address resolution, routing algorithms, congestion control and tcpip.
CSCI3869 Coverage of potential threats to networks. Course includes strategies to harden system against these threats, and discusses the liability of the Network administrator for some crimes via the network. Class concludes with strategies for pursuit when system is compromised or data is altered, removed or copied.
CSCI3870 This course will discuss the legal and ethical regulations, laws and policies of cyber defense, including procedures that affect digital forensics and the use of tools, such as EncCase, ProDiscover, Xways, and others. Students will learn about the steps in performing digital forensics starting form incident recognition, evidence gathering, preservation and analysis, through the completion of legal proceeding. Network forensics methodologies will be discussed and network traffic will be analyzed to identify malicious activities. Intrusion detection and prevention systems tools and algorithms will be examined to detect, identify, resolve and document host-based or network-based intrusions.
CSCI3998 This course will provide an introduction to the fundamental concepts and techniques of Artificial Intelligence. Topics covered include problem-solving and search, knowledge representation and reasoning, and the planning problem. Students will learn the Lisp programming language. There will be programming assignments to emphasize the topics studied.
CSCI4391 The first phase of a senior project is to be completed under the direction of a faculty member. The project will generally involve the development of a software system, in which case the first phase involves development of requirements and design documents, project schedule and test plan. Alternatively, the project may take the form of a cooperative education experience. Fall
CSCI4392 The second phase of the senior project. This may involve coding, debugging and testing of the software system being developed, or a continuation of the cooperative education experience. Spring
CSCI4488 A software engineering approach to game programming, building a game engine, debugging techniques, XML, and scripting.
CSCI4498 Integration of classroom study with specific planned periods of supervised learning in productive employment experiences. A developmental process designed to combine progressive learning on the job. University course work and career development skills. Prerequisite: Permission of director of co-op.
MATH1107 Algebraic operations, factoring, exponents, radicals; quadratic and higher degree equations; systems of linear equations; functions and their graphs; exponential, logarithmic and trigonometric functions and their graphs; trigonometric identities; triangle trigonometry.
MATH1203 Slope of a straight lines, slopes of a curve, rate of change of functions, derivatives of algebraic and trigonometric functions, maxima and minima, Mean Value Theorem, indefinite and definite integrals and their applications.
MATH2202 Differentiation and integration of transcendental functions, methods of integration, indeterminate forms, infinite series. Taylor series. Conic sections.
MATH3220 Vector spaces and linear transformations; systems of linear equations, bases, matrix representations of linear transforma- tions, matrix algebra, eigenvalues and eigenvectors, determin- ants, canonical forms, inner product spaces.
MATH3300 A calculus-based introduction to statistics, covering a range of topics from descriptive statistics discrete and continuous probability distributions, sampling distributions, interval estimation, test of hypothesis, linear regression, and ANOVA.
MATH3318 First order linear differential equations, linear differential equations with constant coefficients, variation of parameters, undetermined coefficients, Laplace transforms, solutions in terms of power series, numerical solutions with predictor- corrector and Runge-Kutta methods.