Computer Science
Dr. Felicia Doswell
Department Chair
(757) 823-9454
The Computer Science Program is designed to provide students with fundamental training in the theoretical and practical aspects of computer science. Coupled with the program’s strong mathematics component, this training provides graduates with the necessary background for employment in a wide variety of computing fields or for a smooth entry into graduate-level study. The B.S. degree program in Computer Science is accredited by the Computing Accreditation Commission of ABET. http://www.abet.org
Program Educational Objectives
A graduate of the Undergraduate Computer Science Program at Norfolk State University will be able to do the following:
- Make significant contributions to work products independently and within multi-disciplinary teams;
- Communicate effectively in oral, written, and graphical forms;
- Pursue advanced study or engage in professional practice within the computing profession;
- Engage in the practice of lifelong learning to educate themselves about advancements and emerging technologies within and surrounding the computing profession;
- Practice ethical, social, and professional behaviors in all endeavors;
- Apply computing/computer science principles and practices to solve a variety of problems.
Student Learning Outcomes
Upon graduation, computer science students will be able to demonstrate the following skills:
- Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions;
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline;
- Communicate effectively in a variety of professional contexts;
- Recognize professional responsibilities and make informed judgments in computing practice, taking into account legal, ethical, diversity, equity, inclusion, and accessibility principles consistent with the mission of the institution. based on legal and ethical principles;
- Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
General Department Requirements
Computer Science and Information Technology majors must complete at least 120 credits to complete the B.S. degree. Additionally:
Students must meet prerequisites or their equivalents prior to enrolling in more advanced computer science or information technology courses.
Computer Science majors must earn at least a “C” grade in all English, Science, Mathematics and Computer Science courses. Also majors with a specialty in computer engineering must receive a “C” grade or better in all engineering courses, and majors with a specialty in information systems must receive a “C” grade or better in all courses taken in the School of Business.
Information Technology majors must earn at least a “C” grade in SEM 101 Spartan Seminar 101 (plus SEM 102 and SEM 201), all English, Science, Mathematics, Computer Science courses, and all courses with the ITE, CIT, and IMT prefixes.
Information Technology
Dr. Felicia Doswell
Department Chair
(757) 823-9454
The Information Technology Program aims to provide graduates with the skills and knowledge to take on appropriate professional positions in Information Technology upon graduation and grow into leadership positions or pursue research or graduate studies in the field.
Program Educational Objectives
A graduate of the Undergraduate Computer Science Program at Norfolk State University will be able:
- To work successfully, both independently and in team environments.
- To communicate effectively, both orally and in writing.
- To pursue advanced study or engage in professional practice within the computing profession.
- To engage in the practice of lifelong learning to enhance their capabilities.
- To practice ethical behavior in their professional endeavors.
- To address contemporary issues by using evolving technologies, analytical thinking, and design methodologies.
Student Learning Outcomes
Upon graduation, computer science students will be able to demonstrate the following:
- An ability to apply knowledge of computing and mathematics appropriate to the discipline;
- An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution;
- An ability to design, implement and evaluate a computer-based system, process, component, or program to meet desired needs;
- An ability to function effectively on teams to accomplish a common goal;
- An understanding of professional, ethical, legal, security, and social issues and responsibilities;
- An ability to communicate effectively with a range of audiences;
- An ability to analyze the local and global impact of computing on individuals, organizations and society;
- Recognition of the need for, and an ability to engage in, continuing professional development;
- An ability to use current techniques, skills, and tools necessary for computing practices;
- An ability to use and apply current technical concepts and practices in the core information technologies;
- An ability to identify and analyze user needs and take them into account in the selection, creation, evaluation and administration of computer-based systems;
- An ability to effectively integrate IT-based solutions into the user environment;
- An understanding of best practices and standards and their application;
- An ability to assist in the creation of an effective project plan.
Computer Science Programs
B.S. PROGRAMS
- Bachelor of Science in Computer Science - Standard Track
- Bachelor of Science in Computer Science - Computer Engineering Track
- Bachelor of Science in Computer Science - IA Track
- Bachelor of Science in Computer Science - Cybersecurity Track
- Bachelor of Science in Computer Science - Software Engineering Track
- Bachelor of Science in Information Technology
- Minor in Game Design and Development
- Minor in Computer Science
B.S./M.S. ACCELERATED PROGRAMS
Computer Science Courses
Computer Science
CSC 101 Intro to Computer Science Profession (1 Credits)
An introduction to career opportunities for computer scientists and strategies to improve academic performance in the discipline. Course topics include lectures by computer science professionals and seminars on active coping, collaborative learning, and the development of inclusive relationships.
CSC 150 Computer Literacy (3 Credits)
This is an introductory course to prepare students for the technological demands of the workforce. Students gain hands-on experience using Internet applications and current word processing, spreadsheet, and presentation applications.
CSC 150H Honors Computer Literacy (3 Credits)
This is an introductory course to prepare students for the technological demands of the workforce. Students gain hands-on experience using Internet applications and current word processing, spreadsheet, and presentation applications.
CSC 169 Introduction to Computer Science (3 Credits)
Study of the fundamental concepts of the discipline with emphasis on information representation, algorithms and problem solving, computer hardware and software, data representation and the impact of computers in society.
CSC 170 Computer Programming I (3 Credits)
Introduction to programming and problem solving in an object-oriented language with emphasis on basic programming constructs, arrays, debugging, software engineering practices, and the fundamentals of file handling.
CSC 170L Computer Programming I Laboratory (1 Credits)
The focus of this course is to provide further support in learning C++ programming language syntax, semantics, and developing students' abilities to apply the knowledge in transforming algorithms into C++ code. This course is a supplementary course to CSC 170. It is structured as a closed computer laboratory where students complete specific programming tasks within a fixed time.
CSC 200 Advanced Computer Concepts (3 Credits)
This advanced computer course equips students with the necessary skills to enhance critical thinking, information literacy, and problem-solving abilities. The course primarily focuses on utilizing email, wireless networking, web searching, internet security, web page creation, and presentation tools.
CSC 260 Computer Programming II (3 Credits)
Introduction to data structures, algorithms and building objects. Topics include linked lists, stacks and queues, recursion, and binary trees.
CSC 260L Computer Programming II Laboratory (1 Credits)
Supplementary course to CSC 260 structured as a closed computer laboratory to complete specific programming tasks within a fixed time.
CSC 268 Computer Organization (3 Credits)
Fundamentals of the architecture and operation of modern computers. Computer arithmetic: number systems, number conversions including IEEE binary floating point number standard. Basic computer logic gates: combinational and sequential circuits, adders, ALU, SRAM and DRAM. Basic assembly language programming, basic Instruction Set Architecture (ISA), and the design of single cycle CPU. The MIPS based computers are used as example architecture, and alternative architectures are also discussed.
CSC 275 Fundamentals of Cybersecurity (3 Credits)
This course is designed for IT and computer professionals to learn computer and network security theories and practices that can be used to significantly reduce the security vulnerability of computers on internal networks or the Internet. Topics include cryptography, program security, operating systems security, database security, network security, security administration, computer ethics, and legal issues.
CSC 290 Survey of Video Gaming (3 Credits)
This course provides an overview of computer and video games, including evaluation and analysis of the cultural, historical, literary, psychological, and technological impact of games on society, education, and industry. Critical play is an important aspect of this course. Students conduct surveys of different game genres and study design, implementation, and testing issues that confront game developers. The course explores interactivity, learning, and storytelling as it relates to games.
CSC 292 Unix and C Programming (3 Credits)
An introduction to C programming in a UNIX environment. Course content includes the UNIX command interpreter Shell; the use of Shell scripts to create powerful tools and applications; and the development of application and systems programs using C.
CSC 295 Java Applications Programming (3 Credits)
Introduction to the core JAVA language with emphasis on application development using the latest JAVA class libraries such as Swing, JavaBeans, Java2D, Java3D. This course is designed for students who are familiar with object-oriented programming. The prerequisite course is Computer Programming II or equivalent knowledge.
CSC 312 Topics in Information Technology (3 Credits)
Advanced Information Technology topics that are not generally covered in the curriculum. Designed as a Computer Science Applied Computing elective, not as a replacement for any specific required course. Course topic and syllabus must be approved by the Department Head.
CSC 313 Network Administration (3 Credits)
This course provides essential knowledge and skills required of network administrators. It includes an overview of TCP/IP protocols and how to properly configure and manage network services based on the protocols (including DNS, DHCP, AD/LDAP directory services, print and file servers, NFS/NIS, and routing services). It also has practical lab components for students to learn how to set up, configure, troubleshoot, and administer the network services in both Windows and Linux environments.
CSC 314 Advanced Internet Programming (3 Credits)
A second Internet programming course concentrating on advanced Internet application development. Creation of relatively sophisticated web pages and applications that allow interactions between web page users and the web page as well as network programming, JSP, JDBC, XML processing are the focus of the course. Different Internet programming language and tools will also be included.
CSC 316 Introduction to Cloud Computing (3 Credits)
Introduction to core concepts in cloud computing. Students gain knowledge required for understanding cloud computing and becoming cloud practitioners. Concepts include essential characteristics of cloud computing, its history, and the business and emerging technology use cases enabled by cloud computing. Students are introduced to some of the current prominent service providers, the services they offer, and review of some case studies of cloud computing across the industry.
CSC 360 Interface Design (3 Credits)
An introduction to the techniques used for designing, implementing, and testing human-computer interfaces. Topics include design methods for creating user centered interfaces, interface implementation, techniques and tools for event driven programming, and interface testing and evaluation.
CSC 361 Survey of Programming Languages (3 Credits)
This course prepares students to survey, analyze, and evaluate programming languages such as C, C++, Python, Java, Prolog, and Lisp. Topics include data structures and storage, control structures, execution environment, input/output, and the syntax and semantics of the languages.
CSC 369 Intro to 3D Animation & Visual Effect (3 Credits)
This course is an applied introduction to the techniques used for modeling, animating, texturing, lighting, rendering, and creating 3-D content for games, animation, and visualizations in a team environment.
CSC 372 Data Structures (3 Credits)
Analysis of data structures and algorithms using C++ as the implementation language. Detailed examination of lists, heaps, trees, graphs, file structures, and the use of formal methods with emphasis on the development and analysis of efficient algorithms.
CSC 373 Algorithms Design and Analysis (3 Credits)
This course focuses on the practical applications of computer algorithm design and analysis, emphasizing correctness and efficiency. Well-known data structures, problem-solving, paradigms and algorithms are explored to illustrate alternative ways to develop automated solutions to argue the correctness of implementations and to recognize opportunities to attain greater efficiencies versus naive approaches.
CSC 380 Software Engineering (3 Credits)
This course is an introduction to the design of software projects and the phases of the software development lifecycle (system requirements and analysis, design, implementation, testing, and maintenance). Emphasis is placed on the development of artifacts (documents and code) for software projects.
CSC 390 Technical Strategies in Game Design (3 Credits)
This course introduces students to the basic concepts of Game User Interface Design, process flowcharts, storytelling, storyboarding, and the basics of project management with respect to game design.
CSC 395 Mobile App Development Using Android (3 Credits)
This course provides basic concepts necessary to understand, design and develop Android mobile applications. Students will learn the structure, services, and activities of Android applications by using the Android, Software Development Kit (SDK), the Java programming language, and Android Studio Integrated Development Environment (IDE). Students will be able to build a complete and publishable Android application that includes most of the key concepts presented in the course.
CSC 411 Web Server Administration (3 Credits)
An introductory course providing individuals with the core skills needed to meet the demands of the Web development and Internet community. The three key skill areas focused on this course are Web management, content management, and technical management.
CSC 420 Database Principles and Design (3 Credits)
An introductory course emphasizing the basic concepts and principles of database systems. Topics include an introduction to database systems and databases, different database system models, basic system and language support for database systems, relational modes, relational algebra, introduction to relational database design as well as overview of common database system issues.
CSC 422 Database Implementation (3 Credits)
Introduction to database design methodology and tools, designing and building of forms and reports, database programming using embedded SQL, Internet/Web database and database administration.
CSC 430 Data Communications (3 Credits)
Study of principles of computer communication as well as hardware and software designs, including transmission media, data encoding, transmission techniques, protocols, switching networks, broadcast networks, and local area networks.
CSC 432 Wireless Internet of Things (3 Credits)
The Internet of Things (IoT) is a platform where smart devices sense the environment, act and respond to needs closely or remotely through actuators. The course encompasses wireless data networking, embedded systems, and electronics. It further examines concepts of IoT, wireless technologies for IoT, cloud computing services, and object-oriented programming. Topics include data analytics for IoT, security and privacy, and IoT markets emphasizing hands-on experience with smart applications.
CSC 435 Computer Security I (3 Credits)
Introduction to Information Assurance concepts in addition to logging, encryption and decryption, effects on operating systems and machine architecture, countermeasures, risk analysis, security administration, legality and ethics, and computer forensics.
CSC 445 Computer Network Defense (3 Credits)
Solid foundation in network defense fundamentals covering conceptual and practical aspects of network security. Reviews threats to network security, defense-in-depth strategy and technologies, and network security policy design and implementation. Explores three key network defense technologies: firewalls, intrusion detection and prevention systems, and virtual private networks. Labs provide hands-on learning of network defense techniques to protect networks and communications.
CSC 449 Cryptography and Network Security (3 Credits)
Introduces the principles of number theory and the practice of network security and cryptographic algorithms. Topics include number theory, cryptography, key management, network security, web security, and protocols for secure electronic commerce.
CSC 464 Operating Systems (3 Credits)
Introduction to the history and evolution of operating systems, the concepts behind and structure of various operating systems, process scheduling, interprocess communication, input and output, multiprogramming, memory management and file systems. Concepts of distributed operating systems are also introduced.
CSC 466 Advanced Computer Topics I (3 Credits)
The Advanced Computer Topics courses are not generally covered in the curriculum. They are designed as a Computer Science elective, not as a replacement for any specifically required course.
CSC 467 Advanced Computer Topics II (3 Credits)
The Advanced Computer Topics courses are not generally covered in the curriculum. They are designed as a Computer Science elective, not as a replacement for any specifically required course.
CSC 468 Computer Architecture (3 Credits)
Study of computer organization and architecture that deals with processors, their architectures, memory, input, output, the micro architectural level, instruction set architectural level, and the operating system machine level.
CSC 470 Artificial Intelligence (3 Credits)
In-depth study of concepts and problem-solving techniques of artificial intelligence, including knowledge representation, functional and logic programming, machine learning, natural language understanding, computer vision, robotics, and societal impact.
CSC 471 agame Design and Development (3 Credits)
This course introduces students to game design and development concepts. Topics include the history of games, genres, play elements, story and character development, game play and storyboard design, level and user interface design, and the game design document.
CSC 472 3D Game Programming (3 Credits)
This is a project-oriented course on 3D Game Programming. Students will work in teams to design, implement and test a three-dimensional game with interactivity, game state diagrams, animation, sound, and constraints.
CSC 476 Advanced Computer Topics III (3 Credits)
The Advanced Computer Topics courses are not generally covered in the curriculum. They are designed as a Computer Science elective, not as a replacement for any specifically required course.
CSC 477 Advanced Computer Topics IV (3 Credits)
The Advanced Computer Topics courses are not generally covered in the curriculum. They are designed as a Computer Science elective, not as a replacement for any specifically required course.
CSC 485 Software Quality Assurance and Testing (3 Credits)
This course is an introduction to concepts and techniques for testing and modifying software applications. Emphasis is placed on quantitative and practical software methods applied within phases of the software development life cycle (SDLC). Topics include testing techniques (test first, development, graph coverage and criteria, logic-based and syntax-based techniques), automatic and manual testing, testing measurability, design of test plans, and validation of software changes.
CSC 486 Software Project Management (3 Credits)
This course introduces the student to the different aspects of software project management. It will emphasize the main activities and techniques that characterize the development of software products and project management body of knowledge (PMBOK). The main knowledge areas are covered including scope, time, cost, team, risk, and communication management with focus on software development. Agile Management (e.g., SCRUM) and other emerging practices will be covered.
CSC 487 Engineering Secure Software Systems (3 Credits)
This course explores the foundations of software security considering important software vulnerabilities.
CSC 488 Distributed Software Systems (3 Credits)
This course covers the use of large-scale computing platforms, including desktop multicore processors, SMPs, message passing platforms, and virtualized cloud computing environments. It consists of topics on parallel/distributed programming platforms, algorithms, and applications. Design and implementation of distributed software components include process and memory management underlying software applications, sockets, protocols, threads, XML, serialization, reflection, security, and events.
CSC 490 Game Design Capstone (3 Credits)
This course represents the capstone experience of the Game Design and Development minor and serves to prepare students to pursue further game education or possibly enter the game design and development workforce. Students work to form teams (e.g., 3-5 members) to design, develop, and publish an original video or mobile game. Final projects are judged by a curated group of faculty and industry professionals.
CSC 492 Independent Study (3 Credits)
Supervised independent project designed to explore a single topic in a one-to-one learning relationship with a faculty member.
CSC 494 Digital Forensics (3 Credits)
This course focuses on the fundamentals of Digital and Network Forensics introducing students to the applicable laws, ethical responsibilities, and the technical skills required of digital forensics professionals. Students gain knowledge of network memory, hard drive analysis, criminal behavior, chain of custody, data acquisition, proper handling of evidence, image and file analysis, digital forensic reporting, and courtroom preparation.
CSC 498 Computer Science Seminar I (2 Credits)
Culminating course designed to synthesize computer science knowledge and experiences through participation in a research project of the student's choice. Results of the research are presented to peers and other interested members of the computer science community.
CSC 499 Computer Science Seminar II (2 Credits)
Culminating course designed to synthesize computer science knowledge and experiences through participation in a research project of the student's choice. Results of the research are presented to peers and other interested members of the computer science community.
Information Technology
ITE 111 Information Technology Principles (3 Credits)
An introductory course that exposes students to the academic discipline of Information Technology (IT). Pervasive IT themes, such as IT history, organizational, social, and ethical issues, and relationship of IT to other computing disciplines, will be covered.
ITE 195 Introduction to Internet Programming (3 Credits)
Introduction to high level internet programming techniques and Java with emphasis on internet programming basics for creating static Web pages and dynamic Web pages in HTML and XML through the addition of scripts. Utilizes the latest Java Development Kit.
ITE 211 It Operating Systems (3 Credits)
An introduction to the basics of computer operating systems including file systems, configuration, interprocess communication, security, administration, interfacing, multitasking, and performance analysis.
ITE 311 Fundamentals of Networking (3 Credits)
This is an introductory course that covers the basics of how networks work, including the topics of OSI model, Internet model, network components, LANs, WANs, routers, switches, wireless communication, network security, TCP/IP Internet protocols, and network applications such as web and email. It also covers the fundamental aspects of configuring and troubleshooting network features on a Windows or Unix workstation.