Computer Science

Return to Computer Science | Courses Index

[1] Courses in Computer Science (CSCI)

1110 INTRODUCTION TO ELECTRONIC SPREADSHEETS A service course for non-majors. This course is an introductory course in electronic spreadsheets. A basic knowledge of computer usage is assumed.

1115 INTRODUCTION TO DATABASES A service course for non-majors. This course is an introductory course to database technology. Coverage includes 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. This course is an introductory course for the use of presentation software tools. 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 system 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 An introductory course on computational thinking and programming in a current high-level programming language. Students gain computational problem solving ability through design and develop solutions related to real world applications. Prerequisite: MATH 1390 or consent of instructor.

1470 COMPUTER SCIENCE I An introductory course for computer science majors and minors with major emphasis on 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 for majors and minors that emphasizes problem solving and programming using dynamic memory management and object-oriented programming (OOP) paradigm. Prerequisites: C or better in CSCI 1470.

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

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

3190 SOCIAL IMPLICATIONS OF TECHNOLOGY A required course for majors that introduces the effects of computer technology on society and individuals, and to the ethics of computer professionals. Topics include privacy, the nature of work, centralization versus decentralization, and the need for human factor analysis in the development of new computer systems. Prerequisites: CSCI 2320 or consent of instructor.

3V75 INTERNSHIP An elective for majors. The student enrolled in this course will work for a local industry, business, or government entity for a semester. This course is reserved for upper-division computer science majors.  Up to 3 credits may be applied toward CS upper level electives toward the degree.  Prerequisites: junior or senior status, and approval by the department.

3330 ALGORITHMS A required course for majors and minors that studies 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, MATH 2330.

3335 NETWORKING An elective for 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, future trends in communications. Prerequisite: CSCI 2320 or consent of instructor.

3345 HUMAN-COMPUTER INTERACTION This course 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 majors. Database models with the emphasis on relational database, the concept and mathematical foundations of relational database, 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 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 majors. Topics include arithmetic and logic unit, control unit, memory system, I/O system, instruction format, instruction implementation, and program flow control. Prerequisite: CSCI 2440.

3381 OBJECT-ORIENTED SOFTWARE DEVELOPMENT WITH JAVA A required course for majors. This course introduces object-oriented programming design and implementation. It covers the object oriented programming basics, building applets, multimedia, network programming techniques, and multi-thread programming techniques in an object-oriented language. The emphasis of this course is object-oriented programming techniques and network-related programming techniques. Prerequisites: CSCI 2320.

3382 MULTI-CORE AND MULTITHREADED PROGRAMMING An elective course for upper level Computer Science majors. Topics include 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.

3385 ARTIFICIAL INTELLIGENCE An elective for majors. The course introduces the elements of artificial intelligence covering 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 3330.

4191 SEMINAR IN APPLIED COMPUTING Investigation of current development in computer science by attending and giving presentations supervised by a faculty member. Prerequisite: upper level status.

4V95 INDEPENDENT STUDY (Variable credit: 1-3 credit hours.) An elective for majors. May be repeated with a change in content for a maximum of 6 semester hours. Prerequisite: Consent of instructor.

4300 OPERATING SYSTEMS A required course for majors. Introduction to operating systems, 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 3380.

4305 LINUX/UNIX SYSTEMS An elective course for upper-level Computer Science majors. Topics include Linux operating environment and architecture, command line Linux utilities, application development under Linux, virtualization, building and using libraries, POSIX threads programming, synchronization and semaphores, shared memory programming, advanced file handling, regular expressions, shells and shell scripting in various languages. Prerequisite: CSCI 2320.

4310 INTRODUCTION TO SCIENTIFIC COMPUTING An elective course for majors and others interested in data analysis with appropriate programming and mathematical background. This course introduces numerical methods to analyze data with modeling, algorithm development and implementation, software tools, and applications. Prerequisite: MATH 3320 or consent of instructor.

4315 INFORMATION SECURITY This course introduces the basic concepts, principles, and the state-of-the-art technologies in the realm of computer/network security and information assurance. It introduces topics ranging 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 2320. [UD UCA Core: R]

4321 ETHICAL IMPLICATIONS OF A GLOBAL, DIVERSE AND TECHNOLOGICAL SOCIETY  Part of the Computer Science core. A course 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: successful completion of 45 or more credit hours. [UD UCA Core: D, R]

4340 INTRODUCTION TO PARALLEL PROGRAMMING An elective course for majors 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 or consent of the instructor.

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

4352 INTRODUCTION TO GAME PROGRAMMING This senior-level elective course focuses on 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 This course introduces the concepts, principles, and the state-of-the-art technologies related to multimedia computing, including graphics, audio, image, video, animation, text, etc. Topics will include multimedia information capture, digitization, compression, network communication, and practical applications. Prerequisite: CSCI 2320.

4355 DISTRIBUTED OBJECT COMPUTING An elective for majors 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 for computer science majors. This course covers 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 for majors that studies new and advanced topics in computer science. May be repeated for credit with a change of topic. Prerequisite: upper-level status and consent of instructor.

4365 WEB TECHNOLOGY An elective course for majors. This course 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 An elective course for majors. This course introduces 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 financial data and Bioinformatics are included. Prerequisite: CSCI 3360.

4371 MACHINE LEARNING  An introduction to machine learning. 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 will be emphasized. A required course for Computer Science majors in the Data Science track and an elective course for other Computer Science majors. Prerequisite: CSCI 3385.

4372 DATA CLUSTERING  An introduction to data clustering. Topics include proximity functions, attribute normalization, hierarchical algorithms, partitional algorithms, initialization, and validation. An elective course for general Computer Science program and for the Computer Science-Data Science concentration. Prerequisite: CSCI 3330.

4381 ADVANCED JAVA PROGRAMMING An elective course for Computer Science majors. This course covers 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 for majors. Introduces the elements of theory of computing covering basics of automata theory, formal languages, and Turing machines. Prerequisites: CSCI 2320 and MATH 2330.

4395 UNDERGRADUATE RESEARCH An elective for majors. Prerequisite: Upper-level status and consent of instructor.

4490 SOFTWARE ENGINEERING A required course for 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  A required course for Computer Science majors in the Data Science track. 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 and CSCI 4371. [UD UCA Core: Z]