Wing Technology Center
University of Wisconsin - La Crosse Computer Science Department University of Wisconsin - La Crosse
Science and Allied Health Homepage UW-La Crosse Homepage
Wing Technology Center
For Prospective Students
For Current Students
Undergraduate Program
Graduate Program
Faculty and Staff
Advising
Distinguished Lecture Series
Contact Us
Search

COMPUTER SCIENCE (C-S) Courses

Internships
Students majoring in computer science who wish to enroll in CEI 450 or CEI 475, University Internships, must have completed 15 credits of computer science course work, including C-S 220, and must have a minimum GPA of 2.50 in computer science courses to be eligible for departmental approval and supervision. Credits earned in internships do not apply to major or minor requirements.

+ above a course number indicates a General Education course.

+
C-S 101 Cr. 4
Introduction to Computing

Computers and computer software are an integral part of modern society. This course explores this relationship. Students will examine the computer as a problem-solving tool through the use of database, spreadsheets and small scale programming. Students will examine the computer as a communication tool through the use of database, spreadsheets and small scale programming. Students will examine the computer as a communication tool through the use of word processing and the Internet. Other topics include the history and future of computer technology, computer hardware basics, man/machine relationships, applications of computers in various disciplines, and social/ethical issues. Credits earned in C-S 101 cannot be applied to the C-S major or minor. Usually Offered: Fall and Spring Semester and Summer Term

C-S 102 Cr. 3
Web Development and the Internet

An introduction to the Internet and the fundamentals of Web page design: including history and technical structure of the Internet, markup languages and Web page programming. Technical issues include client/server interfaces and network protocols. Other topics include societal issues: privacy, security, accessibility, intellectual property and censorship. Usually Offered: Occasionally

C-S 103 Cr. 1
Elementary Database Principles and Design

An introduction to the design and implementation of relational databases. Design concepts will include entity-relationship modeling, relational table structure, keys, foreign keys, referential integrity, and data quality. Implementation concepts will emphasize extracting information through queries, reports, and forms. Usually Offered: Spring

C-S 104 Cr. 1
Elementary Spreadsheet Principles and Design

An introduction to the design and implementation of business spreadsheets. Design principles will include cell content, use of functions and formulas, relative and absolute addressing, and formatting. Modern spreadsheet software will be used to implement the spreadsheets, with an emphasis on presenting numeric data in an organized manner. Usually Offered: Spring

+
C-S 120 Cr. 4
Software Design I

An introduction to the fundamentals of software development; including software classes, objects, inheritance, polymorphism, logic, selection control, repetition control, subprograms, parameter passage, and rudimentary software engineering techniques. Students complete numerous programming projects using a modern programming language. Prerequisite: MTH 151 or 175, or math placement test scores at, or above, MTH 151. Usually Offered: Fall and Spring Semester

C-S 220 Cr. 3
Software Design II

This is a second course in the design of programs. Emphasis is placed on data abstraction and its application in design. Definitions of abstract data types are examined. The following structures are examined as methods for implementing data abstractions: recursion, sets, stacks, queues, strings, and various linked lists. Students will be expected to write several programs using these techniques in a modern programming language. Prerequisite: C-S 120. Usually Offered: Fall and Spring Semester

C-S 224 Cr. 1-3
Introduction to the ____________ Programming Language

This course presents the syntax and semantics of a particular programming language. Different offerings of the course will present different languages. Students are expected to be fluent in another programming language prior to enrollment. Prerequisite: a prior computer science course appropriate to the language being offered. (Repeatable for credit - maximum 6. Each repeat must be for a different language.) Usually Offered: On Demand

C-S 270 Cr. 3
Assembler Programming and Introduction to Computer Organization

Programming in machine and assembler language is integrated with an introduction to the organization of computer hardware. An examination of the instruction set merges with descriptions of the related hardware devices. Laboratory assignments include the construction of software, as well as hardware, units. Topics include basic instruction types, data representation, addressing modes, combinational circuit design, flip-flops, registers, the ALU, computer memory, and interrupt handling. Prerequisite: C-S 120, MTH 225 or concurrent enrollment. Usually Offered: Fall and Spring Semester

C-S 301/501 Cr. 2
Using the Internet

An introduction to the Internet and computer networking. A survey of Internet resources and methods used to retrieve and create Internet resources. Topics include: connecting to the Internet, electronic mail, file transfer, remote login, Mosaic, World Wide Web, Gopher, TCP/IP, networking hardware. Not applicable to a computer science major or minor. Usually Offered: On Demand

C-S 340 Cr. 3
Software Design III: Abstract Data Types

An extensive survey of data structures and associated algorithms. An introduction to algorithm efficiency measures is included as a tool for deciding among alternate algorithms. Topics include: searching and sorting in arrays, hash tables, tree traversal and search algorithms, expression evaluation and graphs. Prerequisites: C-S 220 and MTH 225. Usually Offered: Fall and Spring Semester

C-S 341 Cr. 3
Software Design IV: Software Engineering

A study of methodologies for the development of reliable software systems. Several specification, design, and testing techniques are surveyed with an emphasis on one particular formal specification and formal design technique. Students work in teams, applying these techniques to the development of a medium scale (2000-5000 lines) software product. Prerequisite: C-S 340. Usually Offered: Fall Semester

C-S 342 Cr. 3
Software Testing Techniques

As the size and complexity of software projects have grown, so has the importance of ensuring program correctness. This course examines the issues of program testing, validation, and verification. Course projects require students to construct test data and to analyze the correctness of several software systems. Prerequisite: C-S 340. Usually Offered: Spring Semester, Odd Years

C-S 351 Cr. 3
Simulation

Programming computers to play games and imitate activities of systems such as drive-in facilities, check-out lanes, and computer operations. Topics include tests of goodness of fit, random number generators, simulated sampling, queuing theory, analysis of systems to be simulated, construction and validation of simulation programs, and interpretation of results. Prerequisites: C-S 220 and MTH 207. Usually Offered: Occasionally

C-S 352 Cr. 3
Computer Graphics and Scientific Visualization

An introduction to the fundamentals of computer graphics and its application to Scientific Visualization. Topics include basic imaging algorithms, geometric transformations, hidden surface algorithms, polygonal rendering, solid modeling, lighting models, and specialized graphics hardware. Prerequisites: C-S 340 and MTH 207. Usually Offered: Spring Semester, Even Years

C-S 353 Cr. 3
Analysis of Algorithm Complexity

An in-depth analysis of the computational complexity of a wide range of algorithms for problems of fundamental importance to computer science. Algorithms to be examined include: sorting, pattern matching and various graph algorithms. Prerequisites: C-S 340 and MTH 207. Usually Offered: Fall Semester, Even Years

C-S 364 Cr. 3
Introduction to Database Management Systems

Introduction to the design and organization of database management systems. Topics include the relational data model, relational algebra, SQL query language, database software development, data security, normalization, client/server environments. Prerequisites: C-S 220. Students with credit in C-S 362 (course now deleted) may not get credit in 364. Usually Offered: Fall Semester

C-S 370 Cr. 3
Computer Architecture

A presentation of the logical organization of modern digital computers. Topics include performance evaluation, instruction set design, computer arithmetic, processor control, pipe-lining, cache memory, memory hierarchy, memory and system buses, and I/O organization. Prerequisites: C-S 270 and MTH 225. Usually Offered: Fall and Spring Semester

C-S 395 Cr. 1-3
Independent Study

Individualized study of topics in computer science not covered by courses regularly taught in the department. Prerequisite: written consent of the instructor and the department chair. Repeatable for credit - maximum 6. Usually Offered: Fall and Spring Semester and Summer Term

C-S 419/519 Cr. 1-3
Topics in Computer Science

A special topics course in Computer Science which will function as a forum for new ideas and testing ground for new courses. Prerequisite: Consent of instructor. Repeatable for credit - maximum 6. Usually Offered: On Demand

C-S 421/521 Cr. 3
Programming Language Concepts

A comparative study of the concepts underlying the design of contemporary high-level programming languages, including imperative, functional, logic and object-oriented paradigms; formal representation of syntax and semantics; control structures; data and procedural abstraction; scope and extent; parallelism and exception handling. This course cannot be taken both at the undergraduate level and at the graduate level. Prerequisite: C-S 340. Usually Offered: Fall and Spring Semester

C-S 431 Cr. 3
Introduction to Robotics

This course is a hands-on introduction to the algorithms and techniques required to write robot control software. Topics include the components of mobile robots and robot manipulators, manipulator kinematics, robot task planning, sensing, sensor fusion, visual servoing and robot control concepts. Prerequisite: C-S 340. Usually Offered: Spring Semester, Odd years

C-S 441/541 Cr. 3
Operating System Concepts

The study of the structures and algorithms of operating systems. Operating systems are viewed as managers and controllers of resources such as processors, memory, input and output devices and data. Topics include multiprogramming systems, CPU scheduling, memory management and device management. Prerequisites: C-S 340 and 370. Usually Offered: Fall and Spring Semester

C-S 442/542 Cr. 3
Structure of Compilers

An extensive study of all phases of the compilation of high level programming languages. Topics include: scanning, parsing (LL and LR), semantics analysis, symbol table organization and manipulation, internal code generation, storage allocation, optimization and object code generation. Students are required to complete a compiler for a small high-level language. Prerequisites: C-S 270 and 340. Usually Offered: Spring Semester

C-S 443/543 Cr. 3
Topics in Operating Systems

An intermediate course in operating systems extending topics introduced in C-S 441. Operating systems concepts are studied in depth. Typically students will study and modify an existing system. Prerequisite: C-S 441. Usually Offered: Fall Semester, Even Years

C-S 446/546 Cr. 3
Object-Oriented Software Development

Introduction to the concepts and principles of object-orientation (OO). Topics include detailed discussion on analysis and design of OO software systems, notations for OO analysis and design, and comparison of OO programming languages. Advanced topics on object-orientation such as OO testing and software reuse will be briefly discussed. Prerequisites: C-S 340. This course cannot be taken for credit both at the undergraduate level and at the graduate level. Usually Offered: Spring Semester

C-S 449/549 Cr. 3
Advances in Software Engineering

Introduces advanced topics in software engineering. Topics include prototyping models, risk analysis, component-oriented software development, software architectures, software reuse, software metrics and quality analysis. Prerequisites: C-S 341. This course cannot be taken for credit both at the undergraduate level and at the graduate level. Usually offered: Fall Semester, Even Years

C-S 451/551 Cr. 3
User Interface Design

This course focuses on the design and implementation of user interfaces. The topics include characteristics of user interfaces, user profiles, user interface design principles, methods and tools for user interface development, evolution of user interfaces, evaluation of user interfaces, and case studies. Prerequisite: C-S 340. This course cannot be taken for credit both at the undergraduate level and at the graduate level. Usually Offered: Fall Semester, Odd Years

C-S 452/552 Cr. 3
Artificial Intelligence and Pattern Recognition

An introduction to the fundamental principles of artificial intelligence. Topics include the biological basis for intelligence, classification of object descriptions and pattern recognition, search strategies and game trees, natural language processing, automatic theorem proving, programming for artificial intelligence and knowledge-based systems. Projects include writing a substantial artificial intelligence application program. Prerequisite: C-S 340. Usually Offered: Fall Semester, Odd Years

C-S 453/553 Cr. 3
Introduction to the Theory of Computation

An introduction to the theoretical aspects of computation. The capabilities and limits of several computation models are considered including: partial recursive functions, Turing machines, finite state automata and formal languages. The implications of Church's thesis and unsolvable problems such as the halting problem are discussed. Prerequisite: C-S 340. Usually Offered: Spring Semester, Even Years

C-S 454/554 Cr. 3
Digital Image Processing

This course introduces the fundamentals of digital image processing techniques with an emphasis on the design and implementation of image processing algorithms. Topics include: color models, point-processing techniques, convolution, Fourier domain processing, the discrete cosine transform, image compression methodologies, image restoration and enhancement, sampling and image display. Prerequisite: C-S 340. Usually Offered: Fall Semester, Even Years

C-S 455/555 Cr. 3
Fundamentals of Information Security

This course presents the fundamental concepts of information security. Basic policies, techniques and tools for maintaining the security of host computers, information networks and computer software are presented. Elementary cryptography is explored with special attention to applications in data encryption, hashing and digital signatures. Fundamental security management procedures are also introduced, as are the legal and ethical issues associated with computer security. Students will be expected to apply knowledge gained to construct security policies and practice security in the form of access privileges, firewalls, vulnerability scanners and intrusion detection tools. Usually offered: Fall Semester, Odd Years

C-S 464/564 Cr. 3
Advanced Database Management Systems

Advanced topics in database management systems. Topics include the relational data model, relational calculus, embedded SQL programming, database application programming, indexing, systems software and storage structures for databases, concurrency control, crash recovery, database administration, parallel and distributed databases, object oriented databases. This course cannot be taken for credit both at the undergraduate level and the graduate level. Prerequisites: C-S 364. Usually Offered: Spring Semester, Odd Years

C-S 470/570 Cr. 3
Parallel and Distributed Computing

A study of architectures, control software, and applications for parallel and distributed systems. A survey of parallel and distributed architectures including data flow machines, vector processors, shared memory multiprocessors, and message based multiprocessors. Software topics include process communication and synchronization, global state maintenance, negotiation, scheduling, data parallelism, control parallelism, and languages for parallel and distributed computing. Prerequisite: C-S 370. Usually Offered: Occasionally

C-S 471/571 Cr. 3
Data Communications

An introduction to data communications, including the electrical properties and software protocols. In addition to presentations of the concepts and techniques used for data communications, several currently used standards and communications networks will be examined. Prerequisites: C-S 270 and 340. Usually Offered: Spring Semester, Even Years

C-S/C-I 480/680 Cr. 3
Survey of Computer Assisted Instructional Systems

A survey of current trends in Computer Assisted Instruction (CAI). Development of instructional and curriculum materials suitable for computer applications. Use of a current authoring software package. Prerequisite: C-S 224 or C-I 420/620. (Cross-listed with C-I; may only earn credit in C-S or C-I.) Usually Offered: On Demand

C-S 499 Cr. 1-3
Research in Computer Science

An opportunity to become acquainted with literature in the field and to work on a professional level research project within an area of interest of the computer science faculty. A seminar reviewing the results of the study will be a requirement for completion of the course. Prerequisite: consent of computer science staff. Repeatable for credit - maximum 6. Usually Offered: Fall and Spring Semester and Summer Term

C-S 741 Cr. 3
Software Engineering Principles

This course provides a broader outlook of software development activities, introduces software qualities, introduces various life cycle models and software development processes, introduce principles of testing and maintenance activities, and guides the selection of an appropriate life cycle model and software development processes for a given application. Usually Offered: Fall Semester

C-S 742 Cr. 3
Formal Methods in Software Development

This course introduces the need for formal methods in software development, introduces various formal notations that are used in software development, introduces the mathematical preliminaries that are required to understand and to use the formal notations, and provides hands-on experience with one or two formal notations along with some case studies. Usually Offered: Spring Semester

C-S 743 Cr. 3
Software Verification and Validation

This course emphasizes the need for verification and validation processes in software developments, discuses the methods (informal, formal and semi-formal) and techniques (prototyping and theoretical proof techniques) that implement verification and validation, and provides hands-on experience to apply these methods and techniques to some simple case studies. Automation of verification and validation methods will be briefly discussed. Topics on validation will mainly focus on testing. Prerequisite: C-S 741. Usually Offered: Fall Semester

C-S 744 Cr. 3
Managerial Issues in Software Development

This course addresses management issues that are involved in software development projects; these issues include group working, allocation of teams and division of labor, feasibility analysis, marketing strategies and project deadlines. Other topics include in-house software development versus outsourcing, customer interaction, standards and organizational impacts on software development. Usually Offered: Spring Semester

C-S 750 Cr. 3
Topics in Software Engineering

This is a topics course in Software Engineering. New topics will be introduced based on the evolution of Software Engineering research. Some such topics are real-time systems, embedded systems, software for safety-critical applications, software architectures, comoonent-oriented programming, CORBA, COM/DCOM, and CASE (Computer-Aided Software Engineering). Offered: Occasionally

C-S 751 Cr. 3
Seminar in Software Engineering

This course is meant for those who want to speciallize in one or more areas in Software Engineering such as software reuse, software architectures, software testing, software verification etc. The workload for the course will include a number of presentations in the class and one or more written reports.

C-S 752 Cr. 3
Independent Study

This course is meant for those who want to acquire an in-depth knowledge on any Software Engineering topic. Typically, the student may be required to focus on one particular topic and conduct some research on this topic, or to do some software development activities such as analysis, design, implementation or testing.

C-S 798 Cr. 12
Software Development Project

This is a 12-credit course involving a major software development project and requires the development of software for a particular application. Upon registering for this course, a student should choose a problem, analyze its feasibility in terms of time limits and resources, develop the requirements document and design (architectural and detailed) document, implement the design and demonstrate the product with appropriate test cases. A project proposal must be submitted to the Project Evaluation Committee (PEC) in the Computer Science department for approval before starting the project. This proposal should include the goals, project plan, time schedule, resource requirements and other details pertinent to the project. A student can register for the project course at any time by submitting the project proposal, and continue to work on the project thereafter. Depending on the work done in each term, the student will be given appropriate number of credits per term (a maximum of 12) as outlined in the project proposal. PEC is responsible for checking the work proposed / done in each term and giving the appropriate number of credits.

At the completion of the project, the student should submit a written project report that satisfies the requirements stated in A guide for writing a software development project report (will be available from the Computer Science department). This report will be evaluated by PEC. After PEC has read the report (normally within a month after submission), an oral examination will be conducted. Members of PEC and the project supervisors/advisors will serve as the examiners for this oral examination. The student will be given a Pass / Fail grade for the course at the end of the oral examination.

The project will address a real-world problem and hence will be selected from a source outside the Computer Science department. The purpose of this project work is to apply the knowledge gained in the course work to a real-world problem. The sources for selecting the problem include other departments (academic and administrative) in the university and industries. A faculty member in the Computer Science department and a supervisor in the unit from where the problem is chosen (another department or industry) will jointly supervise / guide the student. In the event of not being able to find a suitable project outside the Computer Science department, the student may seek a project given by one of the faculty members in the Computer Science department and the same faculty member will supervise / guide the student. The latter option provides an opportunity for students to conduct research in Software Engineering.


University of Wisconsin-La Crosse 1725 State Street La Crosse, Wisconsin 54601 (608) 785-8000
All material © 2003 by the University of Wisconsin-La Crosse and the Board of Regents of the University of Wisconsin System
Please address questions or comments about this site to: webmaster@cs.uwlax.edu