Descriptions
Prerequisite Chart
Duplicate Course Info
Online WSU Schedule

Computer Science Course Descriptions

These are the descriptions of courses offered by the Department of Computer Science. These do not include new and elective courses, nor prerequisites.

105
An Introduction to Computers and their Applications (3). A computer literacy course designed to give students an introduction to the historical development of the computer; uses of the computer in business, industry, government, education, and the home; hardware components of a computer system; data representation, system analysis and design; issues of ethics posed by technology, and indication of future trends for computers. The laboratory section includes hands-on experience with a microcomputer and standard commercial software packages including word processing, spreadsheet, and Internet literacy.

201
FORTRAN Programming (3). Fundamentals of computer programming in FORTRAN and their applications to problems.

203
Visual Basic (3). Fundamentals of computer programming in Visual Basic and the applications to problems.

205
COBOL Programming (3). Fundamentals of computer programming in COBOL and their applications to problems.

206
BASIC Programming (3). Fundamentals of computer programming in BASIC and their applications to problems.

210
Introduction to Computer Science (3). This course is a broad introduction to the discipline of computer science. The topics covered include algorithms, computer hardware, operating systems, introduction to high-level language programming, databases, artificial intelligence and other applications, and social issues.

211
Problem Solving and Programming in C (4). A first course in programming in a high-level language. The course will emphasize analyzing problems, designing solutions and expressing them in the form of a well-structured program in the high-level language C.

217
C++ Programming (3). Fundamentals of object-oriented programming in C++ with applications to problems.

300
Data Structures and Algorithms I (4). Basic data structures and associated algorithms. Includes stacks, queues, linked lists, trees and graphs. Algorithms are analyzed for efficiency and correctness.

303
Advanced Visual Basic (3). Advanced concepts of Visual Basic, particularly database topics including ADO (ActiveX Data Objects), Data Report Designer, the SQL query language, creating ActiveX controls, and object-oriented programming.

312
Assembly Language and Systems Programming (3). Fundamentals of assembly language programming. Includes assembler, text editor, arithmetic, machine instructions, macros, code view debugging and memory segments. Programming assignments reinforce textbook knowledge.

321
Discrete Structures I (3). Provides a mathematical foundation essential to the entire computer science curriculum. Includes propositional and predicate logic, induction, recursion, and counting techniques.

322
Discrete Structures II (3).A continuation of CS 321. Includes relations, graphs, trees, Boolean algebra and automata.

365
Introduction to Computer Graphics (3). An introduction to interactive computer graphics which presents the basic concepts of the field. Includes geometry of computer graphics, primitives, two- and three-dimensional representation, transformation, data structures, windowing, and clipping, hidden lines and surfaces and shading. Extensive use of computers provides practical experience.

410
Programming Paradigms (3). Exposure to computer programming in various styles of languages. Emphasizes programming rather than theory.

411
Object-Oriented Programming (3). Concepts of object-oriented programming. Includes data abstraction, classes and objects, methods, inheritance, polymorphic variables, dynamically-bound method calls, and data encapsulation. Gives programming experience in an object-oriented programming language.

465
Oracle Development Environment (3). Oracle is a widely-used database management system. This course will cover basic relational database concepts, the SQL query language, PL/SQL, object creation, including indexes, tables, triggers and stored procedures, Oracle Forms, SQL Loader in the transition of legacy systems and Web-enabled applications. Students will work with several real-life projects.

481
Cooperative Education in Computer Science (1-3). Provides a field placement that integrates theory with a planned and supervised professional experience designed to complement and enhance the student's academic program.

501
Numerical Programming Techniques (3). A study of the programming techniques used to solve nonlinear equations, interpolate, integrate and solve systems of linear equations. Discusses the implications of finite precision floating point arithmetic. Also covers techniques for initial and boundary value problems in ordinary differential equations. Selected algorithms are implemented on the computer.

510
Programming Language Concepts (3). Theoretical concepts in the design and use of programming languages, including scope of declarations, storage allocation, subroutines, modules, formal methods for the description of syntax semantics. Introduction to the concepts of different styles of languages -- imperative languages, functional languages, logic languages, object-oriented languages, etc.

540
Operating Systems (3). Covers the fundamental principles of operating systems: process synchronization, scheduling, resource allocation, deadlocks, memory management, and file systems. Studies a specific operating system in depth. Programming assignments consist of modifications and enhancements to the operating system studied.

560
Data Structures and Algorithms II (3). Design and analysis of algorithms. Techniques for design and analysis of algorithms and proof of correctness. Analysis of space and time complexities of various algorithms including several sorting algorithms. Hashing, binary search trees and height balanced trees. Algorithm design techniques including divide and conquer, greedy strategies, and dynamic programming. Elementary graph algorithms.

612
Systems Programming (3). A study of system software including assemblers, disassemblers, macroprocessors, linkers, loaders, language translators and debuggers. Practical experience in building system software through programming laboratory exercises.

615
Compiler Construction (3). A first compiler course for students with a good background in programming languages and sufficient programming experience. The topics covered in the course include overall design and organization of compilers and interpreters, lexical and syntax analysis, construction of symbol tables, scope analysis, type checking, error recovery, run-time organization, intermediate code and its interpretation, code generation and optimization. The course is project-oriented. The main emphasis is on practical experience gained through the design and implementation of a simplified but non-trivial compiler for a strongly typed, procedural language. The implementation is carried out in a modern systems programming environment.

617
Object-Oriented Systems (3).Covers the fundamental concepts of object-oriented systems with emphasis on C++ based systems.Topics include the object-oriented paradigm, encapsulation, information hiding, object identity, classes and methods, messages, static and dynamic binding, inheritance and software reusability, type system, polymorphism, object oriented databases, implementation techniques.

644
Advanced Unix Programming (3). This course is designed to improve skills in C programming under the Unix environment. The course covers file I/O, both buffered and unbuffered, working with the Unix file system, concurrent programming with multiple processes, and process control. The use of signals and concepts of interprocess communication with pipes and FIFOs. Students must have prior knowledge of C language and its use of structures and pointers.

655
Information Delivery on the Internet (3). This course is designed to explore the capabilities of providing information on the World Wide Web. Information is typically provided through some sort of Web site that incorporates static text and the dynamic capabilities of the Web. The student will learn how to create an interactive Web site through the use of CGI and Java programming. Also, students will learn how to interconnect their Web site to databases, and generate images on the fly. The Java portion will cover a wide range of the Java language and the Applet interface and utilities.

665
Introduction to Database Systems (3). An introduction to the fundamental aspects of database systems. Topics include: conceptual database design, entity-relationship modeling, and object-oriented modeling; the relational data model and its foundations, relational languages, and SQL (Structured Query Language); logical database design, dependency theory, and normal forms; physical database design, file structures, indices, and decomposition; integrity, security, concurrency control, recovery techniques, and optimization of relational queries.

680
Introduction to Software Engineering (3). An introduction to the body of knowledge, presently available tools and current theories and conjectures regarding the process of program development. Studies these topics from several different viewpoints, ranging from the individual program statements to a large programming project.

684
Applications Systems Analysis (3). A study of the methods for analyzing business systems problems and other large-scale applications of the computer. At the crossroads of computer technology, management science and human relations, systems analysis is the keystone in the education of the well-trained computer applications analyst. Includes systems design, cost benefit analysis, data base design, distributed processing, project management and documentation.

720
Theoretical Foundations of Computer Science (3). Provides an advanced level introduction to the theoretical bases of computer science. Computer science theory includes the various models of finite state machines, both deterministic and nondeterministic, and concepts of decidability, computability and formal language theory.

742
Computer Communication Networks (3). Introduction to network programming for the Internet environment including the basic concepts of TCP/IP, client-server paradigm, programming of clients and various types of servers, remote procedure calls, concurrency management and interconnection techniques. Emphasizes the design principles that underlie implementation of practical applications.

750
Workshop in Computer Science (1-5). Short-term courses with special focus on introducing computer science concepts. Repeatable for credit.

771
Artificial Intelligence (3). Heuristic versus algorithmic methods, principles of heuristic approach and cognitive processes. Also covers objectives and methods of artificial intelligence research and simulation of cognitive behavior. Includes a survey of appropriate examples from various areas of artificial intelligence research.

798
Individual Projects (1-3). Allows beginning graduate students and mature undergraduate students to pursue individual projects of current interest in computer science. Graded S/U only.

805
Compiler Theory (3). Theory of compilation of programming languages. Finite state machines and lexical analysis. Context-free languages and recognizer. Theory of parsing, including recursive-decent, top-down and bottom-up parsers. Formal description of semantics and code generation. Code optimization. Compiler-compilers.

810
Programming Languages: Advanced Concepts (3). An advanced study of programming language structures and design. Data and control structures and their abstraction. Concurrent programming structures. Formal specifications of syntax and semantics, including models for establishing program correctness. Criteria for language design.

817
Advanced Java Technology (3).This is a course on Java software technology. More advanced features of the language, the underlying implementation technology, and extensions of the Java technology are covered in the course. The language topics include concurrent object-oriented programming and Java core reflection. Extensions of the Java technology providing parametric polymorphism and persistence are also covered. A detailed presentation of the implementation technology underlying Java (Java Virtual Machine) is also given in the course. The course includes challenging programming projects. A significant part of the course is devoted to recent Java research and development results.

821
Analysis of Algorithms (3). Deals with advanced topics in the design and analysis of algorithms, including sorting networks, algorithms for parallel computers, Strassens algorithm for matrix multiplication, polynomial multiplication and the FFT, number theoretic algorithms (gcd computation), and hard problems and interactibility.

822
Parallel Algorithms (3). Deals with the design and analysis of parallel algorithms for various combinatorial problems in the Parallel Random Access Machine (PRAM) model. Covers models of parallel computation, the PRAM model, basic techniques for designing parallel algorithms, algorithms on lists and trees, and algorithms for selection, merging, sorting, searching, as well as algorithms for graph problems.

842
Operating Systems Concepts (3). A comprehensive treatment of the design of executive software for systems ranging from simple multi programming to multi processor and network environments. Addresses concepts of concurrent and parallel processes, related problems of intra- and inter-system communication, synchronization and integrity. Presents general principles of resource management as related to single processor and multi processor environments.

843
Distributed Computing Systems (3). A study of hardware and software features of online multiple computer systems emphasizing network design and telecommunications. Including distributed data bases, interprocessor communication and centralization versus distribution. Also includes study of the use of microcomputers in representative configurations.

862
Advanced Database Systems (3). This course covers recent developments and advances in database technology. It is designed for students who have had a first database course and have a good background in the related computer science disciplines. Possible topics include: extended relational database management systems, object-oriented database management systems, deductive databases, database type systems and database programming language, persistent languages and systems, distributed databases.

863
Multimedia Database Systems (3). This course presents state-of-the-art techniques for representing and manipulating information in multimedia databases. Emphasis will be on image data, audio data, video data, and document data. Theoretical principles underlying storage, retrieval, querying, and delivery of such data will be covered. Requires good prior knowledge of relational and/or object-oriented databases.

864
Database Query Processing and Optimization (3).This course covers concepts and techniques for efficient and accurate processing of queries for a variety of data forms, such as centralized and distributed relational databases, object-oriented databases, fuzzy databases, and multimedia databases.

865
Principles of DBMS Implementation (3). This course deals with two of the three main components of a relational Database Management System (DBMS): storage management and query processing. The third component, transaction management, will be covered as time permits.

866
XML Databases (3).This course deals with modeling semi-structured Web databases as XML databases, their schema (DTD and XMLSchema), integrity constraints, and their query languages (XPath, XSLT, and XQuery).

867
Object-Oriented Databases (3). This course covers the object-oriented technology as it applies to databases and persistent object systems. The focus of the course is on the advantages of the object-oriented database technology in complex application areas. Java database and persistent technologies and the associated tools have an important role in this course along with the related industrial standards, such as ODMG. The course provides the design and implementation experience in a challenging application. A significant part of the course is devoted to recent research and development results.

873
Computer Vision (3). An introduction to computing vision, a rapidly growing subfield of artificial intelligence. The basic topic is the understanding or description of images by a computer or robot. Covers two-dimensional Fourier analysis scene matching and understanding, texture, motion, shape recognition, relational image structure and human perception.

881
Software Specification and Design (3). A detailed presentation of the techniques and tools available for the specification of software requirements and their translation into a design. Includes formal specification and design methods such as structured analysis, object-oriented design and JSD.

886
Software Project Management (3). Presents the knowledge, techniques and tools necessary to manage the development of software products. Topics include the phases and activities involved in building a project, the skills and tools required for estimating and scheduling and the responsibilities of the individuals involved.

890
Graduate Seminar (2). A series of seminars on topics of current research interest in computer science. Participants are required to present one or two seminars on topic(s) to be selected with the approval of their graduate advisors. Repeatable up to four credit hours. Graded S/U only.

891
Project (3). An intensive project involving the analysis and solution of a significant practical problem which must be supervised by a CS graduate faculty advisor, and can be job-related. Students must write a report on the project and pass an oral final examination by an ad hoc faculty committee headed by the project advisor. Graded S/U only.

892
Thesis (1-6). May be repeated for up to six hours of credit. Graded S/U only.

893
Individual Reading (1-5). Graded S/U only.

898
Special Topics (2-3). Topics of current interest to advanced students of computer science. Repeatable for credit.

 

 


 
Copyright © 2006 Department of Computer Science at Wichita State University.
All Rights Reserved Site designed by Academic Web Pages