Computer Science (CSCI)

Return to Computer Science | Courses Index

[1] Courses in Computer Science (CSCI)

1110 INTRODUCTION TO ELECTRONIC SPREADSHEETS A service course for non-majors that introduces electronic spreadsheets. A basic knowledge of computer usage is assumed.

1115 INTRODUCTION TO DATABASES A service course for non-majors that introduces database technology. Topics include data retrieval, creation of forms, and report generation. A basic knowledge of computer usage is assumed.

1120 INTRODUCTION TO PRESENTATION SOFTWARE A service course for non-majors that introduces presentation software. A basic knowledge of computer usage is assumed.

1300 INTRODUCTION TO COMPUTING A service course for non-majors that introduces the fundamental concepts and terminology of computing, history of computing, social impact of computers, software concepts, problem-solving, introduction to computer operations with popular productivity software such as Microsoft Office. Basic skills are taught for word processing, electronic spreadsheets, database management systems, and presentation software. [ACTS: CPSI1003]

1340 INTRODUCTION TO PROGRAMMING I A service course for non-majors that introduces computational thinking and programming in a modern high-level programming language. Students gain computational problem solving skills by designing and developing solutions to real world problems. Prerequisite: MATH 1390 or consent of instructor.

1360 PRINCIPLES OF COMPUTER SCIENCE A service course for non-majors that introduces the fundamental concepts of Computer Science, including computing systems, networks and the Internet, data and analysis, algorithms and programming, and the social impacts of computing.

1470 COMPUTER SCIENCE I A required course for Computer Science, Computer Engineering, and Cybersecurity majors and Computer Science minors that introduces problem solving and programming. The programming component covers data types, input/output statements, control statements, pointers, subprograms and functions, and structures. Prerequisite: MATH 1390.

1480 COMPUTER SCIENCE II A continuation of Computer Science I that is required for Computer Science, Computer Engineering, and Cybersecurity majors and Computer Science minors. The course emphasizes problem solving and programming using dynamic memory management and the object-oriented programming (OOP) paradigm. Prerequisites: C or better in CSCI 1470.

2310 INTRODUCTION TO DATA SCIENCE A required course for Data Science majors that introduces the fundamentals of data science through the Python programming language. Topics include descriptive statistics, visualization, data preprocessing, and predictive analytics. Prerequisite: CSCI 1480. [ACTS: DASC1003]

2320 DATA STRUCTURES A required course for Computer Science, Computer Engineering, and Cybersecurity majors and Computer Science minors. Fundamental data structures including sets, lists, trees, and graphs are studied. Various methods of implementing these structures are investigated and analyzed. Prerequisite: CSCI 1480.

2330 DISCRETE MATHEMATICS FOR COMPUTING A required course for Computer Science, Computer Engineering, and Cybersecurity majors. Topics include the fundamental mathematical tools used in computing, including sets, relations, and functions; propositional logic, predicate logic, and inductive proofs; summations and recurrences; counting and discrete probability; undirected and directed graphs; with applications in computing. Prerequisite: CSCI 1480.

2335 NETWORKING A required course for Computer Science and Cybersecurity majors that introduces communication concepts, structure and organization of communications systems, communications media, speed disparity problems, communications hardware and software, communications monitors, polling, line protocols, partition management, and future trends in communications. Prerequisite: CSCI 1480 or consent of instructor.

2340 ASSEMBLY LANGUAGE PROGRAMMING A required course for Computer Engineering majors that introduces assembly language programming, number systems, instruction sets, addressing modes, and interrupts. Prerequisite: CSCI 1480.

3V75 INTERNSHIP An elective for Computer Science, Computer Engineering, and Cybersecurity majors. The student enrolled in this course will work for a local industry, business, or government entity for a semester. Up to 3 credits may be applied toward the degree.  Prerequisites: Junior or senior status, and approval by the department.

3330 ALGORITHMS A required course for Computer Science and Cybersecurity majors that introduces algorithmic development strategies including divide-and-conquer, greedy method, dynamic programming, search and traversal techniques, backtracking, and branch-and-bound. The theory of NP-Hard and NP-Complete problems is introduced. Analysis of algorithms is also included. Prerequisites: CSCI 2320, CSCI 2330.

3345 HUMAN-COMPUTER INTERACTION  An elective course that introduces fundamentals of human-computer interaction: human processes, computer processes, design processes, task analysis and evaluation, prototyping, multimedia, and user-centered interface design and development. Prerequisite: CSCI 2320.

3360 DATABASE SYSTEMS A required course for Computer Science and Cybersecurity majors that introduces database models with an emphasis on relational databases, the concept and mathematical foundations of relational databases, the formalization of relations, the SQL database definition/manipulation language, and entity relationship database design method. Prerequisite: CSCI 2320. [UD UCA Core: C]

3370 PRINCIPLES OF PROGRAMMING LANGUAGES A required course for Computer Science majors that introduces the evolution of programming languages, language translators, programming paradigms, syntax and semantics, abstraction and structure, data types and data structures, statements, operators and expressions, control structures, abstract data types, subprograms, and discussion of popular programming languages with each paradigm. Prerequisite: CSCI 2320.

3380 COMPUTER ARCHITECTURE A required course for Computer Science and  Computer Engineering majors that introduces arithmetic and logic unit, control unit, memory system, I/O system, instruction formats, instruction implementation, and program flow control. Prerequisite: CSCI 2320.

3381 OBJECT-ORIENTED SOFTWARE DEVELOPMENT WITH JAVA This course focuses on the object-oriented paradigm of programming by exploring its implementation through the key features of the Java programming language. Through an introduction to Java, this course is for intermediate programmers and assumes students have experience and familiarity with another modern language, such as C++, Python, or JavaScript. Main topics include object-oriented programming, inheritance, interfaces, exceptions, generics, and collections, as well as discussions of best practices in programming and design. Prerequisites: CSCI 2320.

3382 MULTI-CORE AND MULTITHREADED PROGRAMMING An elective course that introduces program design and development to gain performance from multiprocessing/multi-core hardware, efficient use of hardware resources, cache-aware programming, optimum memory efficient programming techniques, increased application responsiveness and throughput, effective exploitation of the inherent threadedness in hardware/multi-core, deadlock and race condition detections and solutions, software metrics for measuring the multithreaded programs, and introducing new technologies for multithreading such as C++11/14, Open MP, WebCL, OpenCL, and CUDA. Prerequisite: Junior or senior status.

3385 ARTIFICIAL INTELLIGENCE A required course for Computer Science majors in the Data Science track and an elective course for other Computer Science majors as well as Computer Engineering and Cybersecurity majors. Topics include knowledge representation and pattern matching, search techniques, natural language processing, logic and inference, machine learning, problem solving, expert systems, and programming in Prolog/LISP. Prerequisite: CSCI 2320.

4V95 INDEPENDENT STUDY (Variable credit: 1-3 credit hours.) An elective course. May be repeated with a change in content for a maximum of 6 semester hours. Prerequisite: Junior or Senior status, major GPA of at least 3.0, and consent of instructor.

4300 OPERATING SYSTEMS A required course for Computer Science and Cybersecurity majors that introduces operating systems and their historical development, serial batch systems, multiprogramming systems, time-sharing systems, real-time systems, control programs, job control language, job management, task management, data management, interrupt handling, and concepts of telecommunication. Prerequisites: CSCI 3330 and junior or senior status.

4305 LINUX/UNIX SYSTEMS A required course for Cybersecurity majors that introduces the Linux environment and its architecture, command line Linux utilities, application development under Linux, virtualization, advanced file handling, regular expressions, shells, and shell scripting in various languages. Prerequisite: CSCI 2320 or CISA 3321.

4310 NUMERICAL METHODS FOR DATA SCIENCE An elective course for Computer Science, Computer Engineering, and Cybersecurity majors and others interested in data science with appropriate programming and mathematical background. This course introduces numerical methods for data science. Topics include data modeling, data visualization, algorithm development and implementation, software tools, and applications. Prerequisite: MATH 3320 or consent of instructor.

4315 INFORMATION SECURITY A required course for Computer Science and Cybersecurity majors that introduces the basic concepts, principles, and the state-of-the-art technologies in the realm of computer/network security and information assurance. Topics range from cryptographic techniques to trusted systems to multilevel security to network security to ethics in the computing profession. Students will learn fundamental concepts of security that can be applied to many traditional aspects of computer programming and computer system design. Prerequisite: CSCI 2335 and junior or senior status. [UD UCA Core: R]

4321 ETHICAL IMPLICATIONS OF A GLOBAL, DIVERSE AND TECHNOLOGICAL SOCIETY  Part of the Computer Science core. A required course for Computer Science, Computer Engineering, Cybersecurity, and Data Science majors that explores the social, legal and ethical issues for a global, diverse, and technological society. Our global society is ever more connected; however, ethical views are often different because of gender, racial, political, national, social, or cultural norms. In particular, the course will focus on new technologies and their costs, benefits, and issues related to an increasingly global and diverse society. Also, the course examines the role of a computer professional in the ethical development of new technologies in light of the diversity of end users. The course will offer opportunities for both written and oral presentations and professional development. Prerequisite: CSCI 2320 and successful completion of 60 or more credit hours. [UD UCA Core: D, R]

4340 INTRODUCTION TO PARALLEL PROGRAMMING An elective course that introduces algorithms, data structures, and techniques of parallel computation. Topics include: common types of parallel hardware, principles of parallel system design, communication topologies, development and testing of parallel programs, design of parallel algorithms, and problems associated with distributed parallelism. Prerequisite: CSCI 3330 and CSCI 3380, or consent of the instructor.

4350 COMPUTER GRAPHICS An elective course that introduces fundamental interactive 3D computer graphics programming techniques using OpenGL API. This is a programming intensive course. Prerequisites: CSCI 2320 and MATH 3320.

4352 INTRODUCTION TO GAME PROGRAMMING  An elective course that introduces the fundamentals of game programming. The course will cover the application of basic concepts such as 3D transformations, camera manipulation, lights, and more complex topics such as interactive physics simulation and physics-based visual rendering. In addition to basic theory in visualization, physics, and animation, the design and development of games will be emphasized. The course will also introduce game development on specific platforms such as smartphones, tablets, and gaming consoles. Prerequisite: CSCI 3330 or consent of the instructor.

4353 INTRODUCTION TO MULTIMEDIA COMPUTING An elective course that introduces the concepts, principles, and the state-of-the-art technologies related to multimedia computing, including graphics, audio, image, video, animation, text, etc. Topics include multimedia information capture, digitization, compression, network communication, and practical applications. Prerequisite: CSCI 2320.

4355 DISTRIBUTED OBJECT COMPUTING An elective course that introduces distributed-object computing and its use in client/server and real-world computing applications. It presents the fundamental concepts of distributed-object computing with applications in internet computing. Prerequisites: CSCI 3330 or consent of the instructor.

4357 PROGRAMMING MOBILE DEVICES An elective course that introduces the development of applications for network-enabled mobile devices. Topics include memory management, custom user interface development, event handling, animation using 2-D/3-D graphics, audio and video application programming, and data storage/persistence. Prerequisite: CSCI 3381.

4360 SPECIAL TOPICS IN COMPUTER SCIENCE An elective course that studies new and advanced topics in computer science. May be repeated for credit with a change of topic. Prerequisite: Junior or senior status and consent of instructor.

4365 WEB TECHNOLOGIES An elective course that is designed to familiarize students with concepts and techniques surrounding the building of distributed internet web-based applications. The course will introduce interactive client-server web applications that can be built using various types of Internet technologies. The demonstration of database-driven web sites is performed with the software architecture involved in each tier explored in detail. Common-Gateway-Interfaces are implemented for processing both client and server output data. Security issues and strategies, pertaining to an enterprise-wide web-based application are examined and implemented. Prerequisite: CSCI 3330.

4370 DATA MINING A required course for Computer Science majors in the Data Science track and an elective course for other Computer Science majors as well as Computer Engineering and Cybersecurity majors. Topics include the basic concepts, principles, and the state-of-the-art technologies for Data Mining including Introduction of Data Mining, Data Preprocessing, Data Warehouse, Association Rules, Classification, and Clustering. Specific applications in Finance and Bioinformatics are included. Prerequisite: CSCI 3330 or CSCI 3385.

4371 MACHINE LEARNING  An elective course that introduces machine learning and its applications. Topics include pattern recognition, computational learning theory, classification and clustering algorithms, data visualization, neural networks, and deep learning with big data. Applications in areas such as Computer Vision and Biomedical/Bioinformatics are emphasized. Prerequisite: CSCI 3330 or CSCI 3385.

4372 DATA CLUSTERING  A elective course that introduces data clustering and its applications. Topics include proximity functions, attribute normalization, hierarchical algorithms, partitional algorithms, initialization, and validation. Prerequisite: CSCI 3330 or CSCI 3385.

4381 ADVANCED JAVA PROGRAMMING An elective course that introduces the development of network-enabled applications, website deployment, and mobile applications built using the Android Platform. Topics include advanced client-server techniques using Java networking features, website deployment using the Java Server Programming Interface, and Android mobile application development consisting of custom user interfaces, 2-D animations, and multimedia integration. Prerequisite: CSCI 3381.

4390 THEORY OF COMPUTATION An elective course that introduces the elements of theory of computing covering basics of automata theory, formal languages, and Turing machines. Prerequisites: CSCI 2320 and CSCI 2330.

4395 UNDERGRADUATE RESEARCH An elective course for Computer Science, Computer Engineering, and Cybersecurity majors. Prerequisite: Junior or senior status and consent of instructor.

4490 SOFTWARE ENGINEERING A required course for Computer Science and Computer Engineering majors that introduces basic principles of software engineering, including requirement analysis, specification design, testing, and software maintenance. A non-trivial computer software system from initial concept to a working system is developed in a team environment. Prerequisite: C or better in CSCI 3381. [UD UCA Core: Z]

4491 APPLIED DATA SCIENCE  An elective course for Computer Science, Computer Engineering, and Cybersecurity majors. Students will apply their knowledge learned through the program to solve real world interdisciplinary data science problems. Large projects will be designed for students to work on throughout the semester in a team environment. Students will demonstrate their knowledge and skill and present their results through professional oral presentation and written reports. Prerequisites: CSCI 4370. [UD UCA Core: Z]