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. Fall, spring.
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. Fall, spring.
1120 INTRODUCTION TO PRESENTATION SOFTWARE A service course for non-majors. This course is an introductory course for the use of presentation and authoring software tools. A basic knowledge of computer usage is assumed. Fall, spring.
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 data processing with a word processor, an electronic spreadsheet, a database management system, and the Internet. Fall, spring, summer. [ ACTS: CPSI1003 ]
1340 INTRODUCTION TO PROGRAMMING I An introductory computer programming course for non-majors in a high-level language, with emphasis on problem solving and logical thinking. Students learn to design, implement, test, and debug programs using multimedia data and control structures. Fall, spring.
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. Fall, spring, summer.
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. Fall, spring.
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. Fall, spring.
2440 ASSEMBLY LANGUAGE AND COMPUTER ORGANIZATION A required course for majors and minors. Introduction to the organization and design of digital computers with an emphasis on assembly languages, number systems and internal codes, Boolean algebra and the simplification of Boolean functions. Also included are low-level hardware configurations and instruction sets, addressing modes, interrupts, and sequential logic. Prerequisite: CSCI 1480. Fall, spring.
3190 SOCIAL IMPLICATIONS OF TECHNOLOGY A required course for majors that introduces the affects 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. Fall, spring.
3275 INTERNSHIP IN COMPUTER SCIENCE An elective for majors. The student enrolled in this course will work for a local industry, business, or government entity for approximately 20 hours per week related to computer science for a semester. This course is reserved for upper-division computer science majors. Prerequisites: junior or senior status, and approval by the department. Fall, spring, summer.
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. Fall or spring.
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. Fall or spring.
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. Fall or spring.
3350 FILE STRUCTURES An elective course for majors. File processing concepts and terminology, physical characteristics of external storage devices, external data representation, sequential files, linked lists, trees, networks, file organizations, indexed-sequential files, file control systems, and utility routines. 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. Fall or spring.
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. Spring or fall.
3380 COMPUTER ARCHITECTURE An elective 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. Fall or spring.
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. Spring or fall.
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 2320. Spring.
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. Fall, spring
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 2440, 3330. Fall.
4305 LINUS/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, syncronization and semaphores, shared memory programming, advanced file handling, regular expressions, shells and shell scripting in various languages. Prerequisite: CSCI 2320. Offered once a year.
4310 INTRODUCTION TO SCIENTIFIC COMPUTING Topics in modeling scientific computing problem, algorithm development, numerical methods, software tools, and implementation. Prerequisite: CSCI 2320, MATH 1496, 3320. Fall or spring.
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 3300 or permission from the instructor. Once a year.
4320 COMPILER CONSTRUCTION An elective for majors. Mathematical foundations of compilers, grammars, trees, parsing fundamentals, finite-state automata, top-down parsing, bottom-up parsing, syntax-directed translation, symbols tables, run-time machine models, object code generation, and optimization techniques. Prerequisite: CSCI 3370. Spring or fall.
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 2440, 3330. Spring or fall.
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. Fall or spring.
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 3330. Fall or spring.
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 3335, co-requisite: CSCI 4300. Fall or spring.
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. Prerequisite: upper level status and consent of instructor. Fall or spring.
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-Gatewary-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. Once a year.
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. Fall and spring.
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. Fall or spring.
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: CSCI 3381. Fall.
4195, 4295 INDEPENDENT STUDY An elective for majors. Credit from 1 to 3 hours may be earned in a semester. May be repeated with a change in content for a maximum of 6 semester hours. Prerequisite: Consent of instructor.
4395 UNDERGRADUATE RESEARCH An elective for majors. Prerequisite: Upper-level status and consent of instructor.