COMPUTER SCIENCE (CSCI)

Dennis W. Brewer, Chair of the Dept., 232 Science Engineering Building, 575-6427

PROFESSORS BERGHEL, STARLING; ASSOCIATE PROFESSORS FULLER, LI; ADJUNCT ASSOCIATE PROFESSORS ANDREWS, BERLEANT; ASSISTANT PROFESSORS BADIA, BLANK; ADJUNCT ASSISTANT PROFESSORS LACY, SIMONSON, THORNTON; INSTRUCTORS WIGGINS, HOLMES

Requirements for a Major in Computer Science, Bachelor of Science degree: At least 45 hours in computer science including CSCI 1023/1021L or 1023H/1021M, 1033/1031L, 2003, 2013, 2023, 3303, 3503, 3603, 4003, 4203, 4991; twelve hours of electives (at least nine at the senior level) to be selected from CSCI 390V, 4013, 4103, 4113, 4403, 4413, 4603, 4613, 490V, 4912H, 498V; CSEG 3743, 2533 (can substitute for CSCI 2003 but both cannot be taken for credit), 4513 (can substitute for CSCI 4203 but both cannot be taken for credit) 4933, 4563 (can substitute for CSCI 4103 but both cannot be taken for credit); and ELEG 3923, 4683, 4943; MATH 3353. The mathematics, statistics, and science requirements for the Bachelor of Science degree in computer science are: MATH 2103, 2554, 2564, 3083, 3103 and STAT 4003/4001L or STAT 3013 and a two-course sequence in a laboratory science. The courses used to satisfy the science requirement must be chosen from the natural sciences and must be approved by the Department; only courses which may be used to satisfy the requirements for a B.S. degree in the department offering the course will be approved.

Requirements for a Major in Computer Science, Bachelor of Arts Degree: At least 30 hours in computer science including CSCI 1023/1021L (or 1023H/1021M), 1033/1031L, 2013, 2023, 3503, 4991 plus twelve hours of electives to be selected from a list of CSCI courses numbered 3000 or higher. The mathematics requirements for the degree are MATH 2043, 2103, 3103.

Writing Requirement: The Fulbright College research paper requirement for either degree program may be fulfilled in CSCI 3503.

Requirements for Departmental Honors in Computer Science: The Departmental Honors Program in Computer Science is designed for the superior student and is intended to help the student develop a more comprehensive view of the nature of computer science. The program provides a vehicle for the recognition of the achievements of work beyond the usual course of study. Acceptable performance in the program will earn the student the distinction "Computer Science Scholar Cum Laude" at graduation. Higher degree distinctions are recommended only in truly exceptional cases and are based upon the candidate's whole program of honors studies.

The Department considers the following requirements as necessary for graduation with honors: (1) The candidate must satisfy the requirements set forth by the Honors Council, and (2) A student must obtain at least a 3.50 grade-point average in the required computer science courses for the chosen degree program. In addition, a grade of "D" or "F" in any of the departmental offerings disqualifies a student for honors in computer science.

Candidates must take two semesters of honors seminar, CSCI 4912H, in their senior year. This course will require an acceptable paper and will carry two hours of credit per semester.

Requirements for a Minor in Computer Science: CSCI 1023/1021L or 1023H/1021M, 1033/1031L, 2013, 2023 and either CSCI 2003 or 3503. A student should notify the Depart-ment of his or her intention to minor.

For requirements for the M.S. degree in computer science, see the Graduate School Catalog.


Courses: Computer Sciences (CSCI)

CSCI1003 Survey of Computer Concepts (FA, SP, SU) Vocabulary of computers, covering terminology and concepts of large and small computers. Uses of computers in science, business, and government. Introduction to use of a computer, but students wishing to learn programming language should take CSCI 1023/1021L. Credit will not be given for both this course and CSCI 1012.

CSCI1012 College Computing Skills (FA, SP, SU) Introduction to the computer; basic computing skills including operating systems, word processing, spreadsheet and data base management applications; Internet applications including electronic mail, remote computing via Telnet, file transfer via ftp, World Wide Web navigation and publication. No prior computing experience necessary.

CSCI1021L Programming I Laboratory (FA, SP) Laboratory exercises appropriate to Programming I. Co- or Prerequisite: CSCI 1023 or CSCI 1023H.

CSCI1021M Honors Programming I Laboratory (FA) Laboratory exercises appropriate to Programming I, Honors. Co- or Prerequisite: CSCI 1023H.

CSCI1023 Programming I (FA, SP) Teaches how to design, implement, and document computer programs using techniques of good programming style. Co- or Prerequisite: CSCI 1021L.

CSCI1023H Honors Programming I (FA) This course is taken instead of CSCI 1023 by honor students. Introduction to computer languages, information structures, and the solution of numerical and non-numerical problems using a computer. Co- or Prerequisite: CSCI 1021M.

CSCI1031L Programming II Laboratory (FA, SP) Laboratory exercises appropriate to Programming II. Co- or Prerequisite: CSCI 1033.

CSCI1033 Programming II (FA, SP) Continuation of CSCI 1023. Sorting and searching, pointers and linked lists, files, object-oriented programming, units and program design, recursive programming. Co- or Prerequisite: CSCI 1031L. Prerequisite: CSCI 1023 and CSCI 1021L (or CSCI 1021M).

CSCI2003 Assembler Language Programming (SP, SU) Study of the connection between hardware and machine language and between assembler and high-level languages. Topics include: binary and hexadecimal number systems and information representation; assembling, linking, loading and execution; DOS and BIOS; addressing schemes, macros, subroutines, conditional assembly, multitasking, and interrupts. (Same as CSEG 2533) Prerequisite: CSCI 1023 and CSCI 1021L (or CSEG 1913) and sophomore standing.

CSCI2013 Foundations of Computer Science I (FA, SP) The mechanization of abstraction; interaction, induction, and recursion; analysis of run-time performance; data models; the tree data model, the list data model, the set data model. Co- or Prerequisite: MATH 2103. Prerequisite: CSCI 1023 and CSCI 1021L.

CSCI2023 Foundations of Computer Science II (FA, SP) Data models: the relational data model, the graph data model; patterns, automata, and regular expressions; recursive description of patterns, propositional logic, using logic to design computer components, predicate logic. Prerequisite: CSCI 2013.

CSCI2811L Introduction to Internet/World Wide Web Laboratory (FA) Laboratory to accompany CSCI 2812. Students develop practical skills in, and learn to apply industry-wide standards and practices for, Web page design and layout, electronic publishing, network communications, cybermedia authoring systems, and such bandwidth-limiting enhancements as animation and applets. Corequisite: CSCI 2812.

CSCI2812 Introduction to Internet/World Wide Web (FA) Introduction to Internet and World Wide Web tools and resources, including Web browsers, robots and search engines, multimedia authoring systems, electronic publishing systems, virtual reality systems, network- compatible CD-ROMs, network telecommunication and security systems, digital watermarking, Web censors, internet authoring and programming languages. Corequisite: CSCI 2811L. Prerequisite: CSCI 1012 or equivalent computer experience.

CSCI3303 Introduction to Computer Organization (SP) Computer organization and architecture; assembly language implementation; parallel and distributed architectures. Prerequisite: CSCI 2023.

CSCI3411L Internet Programming Laboratory (SP) Lab will help student develop practical skills in , and learn to apply industry-wide standards and practices for, Web page design and layout, electronic publishing, network communications, cybermedia authoring systems, and such bandwidth-limiting enhancements as animation, applets, etc. Course presumes programming proficiency in one network language: Basic, C, C++, Perl. Corequisite: CSCI 3412. Prerequisite: CSCI 2023.

CSCI3412 Internet Programming (SP) HTML authoring to IETF and non-IETF standards, use of environment and SSI variables, CGI-Bin programming concepts with both scripting languages and interpreted and compiled languages, creating cybermedia documents, advanced form applications, search/index utilities, Web databases. Course presumes programming proficiency in one network language: Basic, C, C++, Perl. Corequisite: CSCI 3411L. Prerequisite: CSCI 2023.

CSCI3503 Introduction to Programming Languages (SP) Comparison of the structure, features, compile and run-time characteristics of LISP, SNOBOL4, PASCAL, PL/1, FORTRAN, ALGOL, and APL. Syntax of programming languages, programming language structures, control structures, operators and operations, and language extensibility. The research paper in this class may fulfill the Fulbright College research paper requirement for computer science majors. Prerequisite: CSCI 2023.

CSCI3603 Artificial Intelligence (FA) Representation of information and knowledge search strategies and heuristics for problem solution. Concepts of computer vision and natural language understanding. Current work in robotics, medicine, psychology. Introduction to Al languages (SAIL, LISP, DENDRAL). Prerequisite: CSCI 2013.

CSCI390V Topics in Computer Science (1-6) (IR) Topics not offered in depth in other computer science courses. Prerequisite: junior standing.

CSCI3923H Honors Colloquium (IR) Covers a special topic or issue, offered as part of the Honors Program. May be repeated. Prerequisite: honors candidacy (not restricted to candidacy in computer science).

CSCI4003 Software Design and Development (FA) Top-down design of systems including structured programming techniques, stepwise refinements, segmentation of programs. Iterative enhancement, organization, and management of large software projects whose methods include milestones, estimation of progress, chief programmer teams, program libraries and documentation. Prerequisite: CSCI 3503 and senior standing in computer science.

CSCI4013 Ada for Software Design (IR) Fundamental software design tools in the Ada programming language. Topics include modularity by the use of packages and separate compilation; computational, data and type abstraction including encapsulation and generic types; concurrency by the use of tasks; exception handling, and mapping logical structures onto physical representations. Prerequisite: CSCI 2023.

CSCI4103 Database Management Systems (IR) What a database management system is; different data models used to structure the logical view of the database; relational, hierarchical, and network. Implementation techniques for database systems: concurrency control, rollback and recovery, integrity and consistency, and view implementation. Prerequisite: CSCI 2023.

CSCI4113 Algorithm Design and Analysis (IR) Fundamental techniques of algorithm design and analysis in theory and practice, with emphasis on efficient and correct computer implementations. Prerequisite: CSCI 2023.

CSCI4203 Operating Systems (SP) Structure, design, and implementation of operating systems. Topics include: Real and virtual memory management, process scheduling, multiprogramming, multiprocessing, and concurrent/parallel programming, deadlock, interrupt processing, disk scheduling, performance evaluation, security, and specific OS examples. Prerequisite: CSCI 2003 or CSEG 2533 and senior standing.

CSCI4403 Computer Networks (IR) The Internationals Standards Organization layered model; network topology; public and proprietary networks. Prerequisite: CSCI 2013 and CSCI 3303.

CSCI4413 Concurrent Computing (IR) Programming concurrent processes; computer interconnection network topologies; loosely coupled and tightly coupled paralleled computer architectures; designing algorithms for concurrency; distributed computer architectures. Prerequisite: senior standing in computer science or engineering.

CSCI4513 Intelligent Robot Control (IR) Examines software issues surrounding the creation and control of autonomous robots. Techniques include: genetic programming, artificial neural networks, reinforcement learning, and symbolic methods. Programs are run in simulation and on actual robotic controllers. Topics discussed include visual processing, spatial mapping, and learning. Prerequisite: CSCI 3603 or equivalent.

CSCI4603 Introduction to Formal Languages and Computability (IR) Finite Automata and regular languages, regular expressions, context-free languages and pushdown automata, nondeterminism, grammars, Turing machines, primitive recursive and m-recursive functions. Church's thesis, halting problem, and undecidability. Prerequisite: MATH 2103.

CSCI4613 Assemblers and Compilers (IR) The study of techniques for the implementation of compilers and assemblers for high-level programming languages. In particular: one-pass versus two-pass assemblers, load-and- go assemblers, macro processing, grammars and parse trees, symbol tables, and code generation. Prerequisite: CSCI 2003 and CSCI 3503.

CSCI490V Topics in Computer Science (1-6) (IR) Current research topics, state of the art, or advanced methodology in one of the major computer science areas, programming languages, hardware and operating systems, theoretical aspects of computer science, artificial intelligence, and database design. May be repeated.

CSCI4912H Honors Seminar (IR) Topics for students in the honors program. May be repeated for 4 hours. Prerequisite: acceptance into the honors program and senior standing.

CSCI498V Senior Thesis (1-6) (IR)

CSCI4991 Computer Science Review (FA, SP) A course to review and appraise the knowledge of the fundamental concepts of computer science. A standardized, comprehensive examination is administered at the end of the course. Prerequisite: senior standing with 18 semester credit hours of graduation.

CSCI5003 Advanced Programming Languages (SP) Abstraction, proof of correctness, functional languages, concurrent programming, exception handling, dataflow and object oriented programming, denotational semantics. Prerequisite: graduate standing.

CSCI5023 Architecture of Computer Systems (FA) An advanced study of both classical and recent computer hardware and software systems. Prerequisite: CSCI 3303 and CSCI 4203.

CSCI5033 Design and Analysis of Algorithms (SP) Design of computer algorithms, with primary emphasis on the development of efficient implementation. Prerequisite: graduate standing.

CSCI5043 Artificial Intelligence (FA) Provides students with an introduction to the major subjects and techniques of artificial intelligence. Topics include: machine learning, computer vision, natural language understanding, and AI languages. (Same as CSEG 5003, ELEG 5103) Prerequisite: CSEG 2723 and graduate standing.

CSCI5103 Microcomputer Programming (IR) Differences between microcomputer and mainframe programming, microcomputer organization, and anatomy of typical microcomputer architectures are studied. Prerequisite: CSCI 2003 and CSCI 2023 and CSCI 3303.

CSCI5113 Logic Programming (IR) Includes an overview of first order predicate logic, resolution, unification, backtracking, procedure dimensions of SLD resolution, soundness and completeness of SLD resolution, Herbrand models, and procedural semantics negation as failure and programming in PROLOG. Prerequisite: CSCI 2003 and CSCI 2023 and CSCI 3303.

CSCI5203 Advanced Database Systems (IR) Data and storage hierarchies, database models, user language designs, database manipulations. Prerequisite: CSCI 2013 and graduate standing.

CSCI5213 Information Storage and Retrieval (IR) Principles of storage and retrieval of textual data. Prerequisite: graduate standing.

CSCI5233 Principles of Compiler Construction (IR) Lexical analysis, parsing, symbol table construction, intermediate code generation, run-time simulation. Prerequisite: graduate standing.

CSCI5243 Formal Languages (IR) An advanced continuation of CSCI 4603. Prerequisite: CSCI 4603 and graduate standing.

CSCI5253 Error-Correcting Codes (IR) Linear algebra in coding theory, employing abstract algebra, cyclic codes, quadratic residue codes, B.C.H. codes, Reed-Muller codes. Prerequisite: MATH 3083 and graduate standing.

CSCI5263 Computational Complexity (IR) Turing machines, recursion theory and computability, complexity measures, NP-completeness, analysis on NP-complete problems, pseudo-polynomial and approximation. algorithms. Prerequisite: graduate standing.

CSCI5273 Natural Language Processing (IR) Covers natural language parsing: grammatical models, grammatical formalisms: X-bar schemes, case schemes, Horn clause schemes, lexical organization, and semantic issues. Prerequisite: CSCI 2003 and CSCI 2023 and CSCI 3303 and CSCI 4603.

CSCI5283 Graph and Combinatoric Algorithms (IR) A study of algorithms for graphs and combinatorics with special attention to computer implementation and runtime efficiency. Prerequisites: Math 2103 and a programming language.

CSCI5303 Parallel Programming (IR) An analysis of parallel computer systems with respect to software engineering. Practical programming experience on pipelined, array, and multiprocessor computers. Credit can be earned in only one of these three courses. CSCI 5303 or CSEG 5303 or ELEG 5913. (Same as CSEG 5303, ELEG 5913) Prerequisite: working knowledge of 'C' language and CSEG 4513 or equivalent.

CSCI5313 Advanced Operating Systems (IR) Concurrent processes and process communication; mutual exclusion and synchronization principles; kernel philosophy; resource allocation and deadlock; case studies of specific operating systems. Prerequisite: CSCI 4203 and graduate standing.

CSCI5703 Visual Computing: Theory and Practice (IR) An introduction to very high-level, pictorial programming environments. Topics include conceptual foundations, language basics, methodology, the role of object orientation in modern visual programming, process communication, dataflow and objectflow processes. Visual programming is contrasted with diagram, table and form-based visual systems, and other visual environments. Prerequisite: CSCI 3503 and graduate standing.

CSCI5713 Multimedia Systems Design (IR) Overview of digital unified multimedia. Programming methodology involved in integration of all forms of digitized information (e.g., text, sound, graphics, animation, and process control) in a single computer-based interactive environment.

CSCI5723 Client-Server Computing (IR) Distributed computing paradigms: client-server, peer-to-peer, nomadic; client and server-side components, communications interface technology, interprocess-communications, development hardware and software. Prerequisite: graduate standing.

CSCI5733 he study of software agents and their deployment on the (FA, SP, SU) Internet: precursors to agents - viruses and worms, origins of software agents, delegate vs. representative agents, agency of the Internet and Web, operational guidelines for agents, HTTP, transaction security, MUD agency, intelligent agency, applications of agents: indexers, resource managers, search utilities, commercial applications.

CSCI590V Advanced Topics in Computer Science (1-3) (IR) Topics not covered in depth in other courses. Prerequisite: graduate standing.

CSCI5953 study of real-time system design. The development of (FA, SP, SU) real-time systems will be examined from the standpoint of academia, government, and industry. Scheduling, operating systems, and architecture considerations are among other topics to be covered. (Same as CSEG 5953)

CSCI610V Master's Thesis (1-6) (FA, SP, SU)

CSCI620V Research in Computer Science (1-18) (IR) Prerequisite: graduate standing.

CSCI690V Graduate Seminar (1-6) (IR) Concentrated study in selected areas of computer science research. May be repeated for 12 hours. Prerequisite: advanced graduate standing

98-99 Catalog of Studies | Fulbright College Front Page