Course Descriptions — Computer Science

CSC1010 Introduction to Computer Science 4 semester hours
This course is an introduction to computer science and the fundamentals of human computer interaction. Technological topics include hardware components and their function, software, databases, the Internet and Intranets. Current sociological computing issues will be discussed, along with emerging technologies and their current and future impact on society. Programming in Visual Basic or VBA will be introduced.

CSC1700 Introduction to Computer Programming 4 semester hours
This course provides an introduction to computer programming, with a focus on object-oriented program design and development. Topics include basic logic structures, looping, one- and two-dimensional arrays, basic I/O, and an introduction to object-oriented design. Extensive programming is required.
Prerequisite: Completion or concurrent enrollment in MTH1100 or higher.

CSC2200 Web Application Development 4 semester hours
This course is an introduction to web-based software development focusing on client-side web technologies to build dynamic and robust websites. Topics include HTTP protocols, PHP, HTML, CSS, JavaScript and AJAX. Programming is required.

CSC2300 Computer Architecture 4 semester hours
This course covers the mechanics of information transfer and representation between system components. Topics include addressing modes, CPU organization, ALU, bus structures, data organization, interrupts, input/output and instruction sets.

CSC2400 C++ for Java Developers 4 semester hours
This course is an introduction to the C++ programming language for Java developers. Emphasis will be on basic syntactical differences between C++ and Java, along with the challenges of implementing C++ in an object-oriented paradigm. Additionally, major language differences, such as the use of pointers, copy constructors, virtual functions, and the application of destructors to avoid memory leaks, will be discussed and practiced through various programming exercises.
Prerequisite: CSC1700.

CSC2550 Network Communications 4 semester hours
This course is an introduction to computer networking and data communications. Topics include various network types, TCP/IP protocols, data transmission techniques, network security, wireless and mobile networks, and network topologies.
Prerequisite: CSC2300.

CSC2650 Data Structures and Algorithms 4 semester hours
This course is a continuation of CSC1700, with a focus on advanced data structures: stacks, queues, priority queues, lists, binary trees, and hash maps. Advanced coding practices, algorithm design, recursive functions, and sorting and searching techniques are studied and utilized in various programming projects. Program design is introduced utilizing modeling tools, such as UML. Extensive programming is required.
Prerequisite: CSC1700.

CSC3100 Operating Systems 4 semester hours
This is an advanced course on operating system design and implementation. Utilizing Java, the concepts of process and memory management are explored in connection with multithreading. Additional topics include kernels, semaphores, mutual exclusion, deadlocks, access control, scheduling and message passing. Programming is required.
Prerequisites: CSC2300; CSC2650.

CSC3200 Unix/Linux Administration 4 semester hours
This is an advanced course on administering Unix and Linux systems. Students will be required to configure and use a Linux computer throughout the course. Topics include command line manipulation, shell programming, process scheduling, user administration and package management. Lab and programming required.
Prerequisites: CSC1700; CSC3100.

CSC3400 Computer Security 4 semester hours
This course is an introduction to the core principles of computer security. Topics include network security, database security, security auditing, data encryption, operating system security, vulnerabilities, user authentication, access control, malicious software, secure software development techniques, firewalls and intrusion detection, site security, legal and ethical security issues, and risk management.
Prerequisite: CSC2550.

CSC3610 Advanced Programming 4 semester hours
This course is a continuation of CSC2650, with a focus on advanced object-oriented programming techniques, including event-driven programming and advanced graphical user interfaces. Topics include encapsulation, polymorphism, persistence, layers of abstraction, inheritance, and intensive discussion on overall program design and efficiency.
Prerequisite: CSC2650.

CSC3700 Advanced Web Application Development 4 semester hours
This course is a continuation of CSC2200, with a focus on server-side web technologies on the Java EE platform. Web-based applications will be built in a team-based environment utilizing current standards and source control (SVN). Topics include JSP, JDBC, JSTL, XML, Apache Web Server, ANT, JUnit, system load testing, data persistence, server configuration, and application deployment on multiple OS types. Extensive programming is required.
Prerequisite: CSC2200.

CSC3800 Artificial Intelligence 4 semester hours
This course is an introduction to basic neural nets, expert systems and intelligent agent algorithms. Additional topics include logic programming, heuristic search strategies, pattern recognition, and natural language processing. Programming required.
Prerequisite: CSC2650.

CSC3810, CSC4810 Selected Topic 1–4 semester hours
Various topics chosen to supplement the curriculum.
Prerequisite: Topic specific.

CSC3850 Introduction to Robotics 4 semester hours
This course introduces students to fundamental concepts in autonomous, mobile robotics. Robot behaviors are programmed. Lab and programming required.
Prerequisites: CSC2650; MTH3270.

CSC3830, CSC4830 Directed Study 1–4 semester hours
This course involves independent work on a project supervised by a faculty member in the program.
Prerequisite: Consent of instructor.

CSC4100 Systems Analysis and Design 4 semester hours
This course is an introduction to information analysis and logical design and specification of various system types. Methods, techniques, and tools to design large scale software applications are utilized to analyze, critique, and build systems. Discussion will include hardware constraints and specifications required to support various software applications and methods to determine and maintain system integrity.
Prerequisites: CSC2300; CSC2650; CSC3400.

CSC4210 Introduction to Mobile Application Development 4 semester hours
This course provides the student with the foundation necessary to build mobile applications. This course is intended for students that have experience with object-oriented programming. Lab and programming required.
Prerequisite: CSC3610.

CSC4350 Software Engineering 4 semester hours
This course is an introduction to software engineering concepts and the role of project management, in conjunction with advanced object-oriented programming techniques. The course will provide an in-depth look at architectural design, application modeling, time and risk management, unit and user testing, proper use of inheritance and encapsulation, and discussions on aspects of code quality, design, and efficiency.
Prerequisite: CSC3610.

CSC4500 Database Design and Implementation 4 semester hours
This course will address the design and implementation of relational databases in conjunction with Java-based applications. Emphasis will be on data-modeling techniques, such as ER modeling, database normalization and optimization, relational algebra, SQL, functional dependency, security, stored procedures, and transaction management. Projects will include the design of a complete database with basic application interaction.
Prerequisite: MTH3270.

CSC4940 Computer Science Internship 1–4 semester hours
Prerequisite: Consent of Instructor. Course repeatable up to four total hours.

CSC4990 Computer Science Capstone 4 semester hours
This course involves a team-based design and development of a large-scale application from conception to deployment. The team will function as a complete software development group; beginning with requirements gathering from external users, to modeling and architecting the application, to implementation, and concluding with user acceptance testing. The course is based on the culmination of knowledge and skills of the students, in an effort to simulate a real-world application development scenario.
Prerequisites: CSC4350; CSC4500; senior standing.