RTF Template

UNDERGRADUATE PROGRAM AND COURSE DESCRIPTIONS

COMPUTER SCIENCE (CS)

College of Science and Health

Department Chair:  Steven Senger

221 Wing Technology Center; 608/785-6805

E-mail: ssenger@uwlax.edu


http://www.cs.uwlax.edu/


Professors: Hunt, Periyasamy, Riley, Senger, Associate Professors: Gendreau, Zheng, Assistant Professors: Allen, Berns, Foley, Hursey, Shutters


Retroactive Credits
Students taking CS 220 and earning a 'B' or better, will be given retroactive credit for CS 120 provided that the student's transcript shows no record of prior or concurrent enrollment in CS 120 or CS 220.


Computer Science Major

(All colleges, excluding Teacher Certification programs): 41 credits – (54 total credits including MTH) CS 120, 220, 270, 340, 341, 370, 421, 441, and 442. The 41 credits must include no less than 27 credits of 300-level and 400-level courses. PHY 335, MTH 317 and/or MTH 371 may be used as part of the 40 credit major. In addition to the 41 credits, MTH 207, 208 and 225 must be taken.


Computer Science Major: Computer Engineering Technology Emphasis

(Students must have completed the Associate in Applied Science Degree requirements for  Electronic and Computer Engineering Technology at Western Technical College (Western) with a grade point average of 3.0 or above): 38 credits – which includes 10 electives (51 credits including MTH).

CS 120 or both CS1-Java I (Western-152 153) and Game Development I (Western-152 181), CS 220, CS 270 or both Microprocessors  (Western-662 133) and Digital Electronics I (Western-662 135), CS 340, 341, 370, 441 and two of CS 421, 442, 455, 471. The 38 credits must include no less than 24 credits of 300-level and 400-level courses. PHY 335, MTH 317 and/or MTH 371 may be used as part of the 38 credit major. Game Development II (Western-152 182) may be completed at Western in place of CS 224. MTH 207, 208 and 225 must be taken. Remaining 10 credits can be CS electives.

Students completing this program are not subject to the College of Science and Health requirement for an academic minor or 18 credits of course work at the 300/400 level in courses outside the major.


Computer Science Education Major (Early Adolescence-Adolescence Certification)

(Teacher Certification programs): 39 credits – (52 total credits including MTH) Major Core: CS 120, 220, 270, 340, 341, 370, 421 or 441 and MTH 421. The 39 credits must include no less than 21 credits of 300-level and 400-level courses (excluding MTH 421). PHY 335, MTH 317 and/or 371 may be used as part of the 39 credit major. In addition to the 39 credits, MTH 207, 208, and 225 are required (13 credits).

Additional teacher certification requirements can be found here.


Computer Science Minor

(All colleges, excluding Teacher Certification programs): 20 credits – CS 120, 220, 340. The 20 credits must include no less than six credits of elective 300/400 level computer science courses. PHY 335, MTH 317, and MTH 371 may be used as alternatives to computer science electives. In addition to 20 credits, MTH 225 must be taken.


Computer Science Education Minor

(Teacher Certification programs): 20 credits – CS 120, 220, 340, 341. The 20 credits must include three credits of elective 300/400 level computer science courses. PHY 335, MTH 317 and 371 may be used as alternatives to computer science electives. In addition to 20 credits, MTH 225 must be taken.

Early Adolescence-Adolescence teacher certification candidates must also complete MTH 421 (four credits).


The computer science department incorporates a significant amount of writing through the required courses instead of identifying particular courses as writing emphasis courses. Students who complete the computer science major will fulfill the university writing emphasis requirement.


Dual Degree Program in Computer Science and Engineering

Students with a computer science major who also are interested in engineering are able to receive both a Bachelor of Science degree (computer science major) from UW-La Crosse and a Bachelor of Science degree (engineering major) from UW-Madison. At UW-La Crosse, students must complete a minimum of 85 credits, including the General Education requirements and specific math and science courses in preparation for the engineering program. Students are recommended to include the following courses in their work at UW-La Crosse: CHM 103; CS 120, 220, 224, 270, 340, 341, 370, 421, 441, 442; ECO 110, 120, 336; MTH 207, 208, 225, 309, 341, 371; PHY 203, 204, 250. Students should consult with the computer science department chair for specific course and sequence advising for this agreement.

Students who express interest in the dual degree program will be selected for entrance into the UW-Madison portion of the program based on their GPA in all course work; their GPA in the chemistry, computer science, mathematics and physics course work required by the program; and the positive recommendation of the UW-La Crosse computer science department chair (or designee). Qualified UW-La Crosse applicants are assured admission in the College of Engineering at UW-Madison.

In order to receive the BS degree from UW-La Crosse, students must also complete credits (to total a minimum of 120 credits) in engineering at UW-Madison and transfer these credits to UW-La Crosse. For the typical student, the remaining credits must include at least eight credits at the 300-level or above. This transfer of credits and awarding of the BS degree by UW-L can take place as soon as the student earns the necessary credits.


Dual Degree Program in Computer Science and Master of Software Engineering

The dual degree program in CS and Master of Software Engineering enables a UW-L student to earn both a Bachelor of Science degree with a computer science major and a Master of Software Engineering (MSE) degree in five years. Students in this dual degree program should complete CS 120, 220, 270, 340, 370, 421, 441, 442, MTH 207, 208, 225, and nine credits of 300 or 400 level CS electives (excluding CS 341) by the end of their junior year. During the senior year students should complete CS 546, 741, 743, 742, and three or six graduate level MSE elective credits. In the fifth year students should complete CS 744, three or six graduate level MSE electives, and the capstone project. CS 546 and CS 741 will count toward the 41 credit hours of computer science required for the BS degree. CS 742, 743, 744, 12 credits of 798 (capstone project), and nine credits of MSE electives will fulfill the MSE requirements.

Students may be accepted into the dual degree program anytime before they have completed 75 undergraduate credit hours. Applicants for undergraduate admission to UW-L may request admission into the dual degree program. In order to remain in the program students must maintain a 3.00 GPA. Award of the BS degree will occur upon completion of 120 credits, the CS major requirements, the SAH college core requirements, and the general university requirements. Students will have graduate student status graduate credits (normally in the second semester of their senior year.) Award of the MSE degree will occur after the completion of the BS and MSE requirements.

Contact the Computer Science Department for application information. See the online graduate catalog for more information about the MSE program.

Note: Courses offered at both the undergraduate and graduate levels can only be taken for credit at one level.

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 CS 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.



COMPUTER SCIENCE (CS)


+ next to a course number indicate a GENERAL EDUCATION course


+CS  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 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 CS 101 cannot be applied to the CS major or minor.   Offered Occasionally.


CS  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. Seven-week course. Prerequisite: Course not open to those who have completed CS 101.  Offered Occasionally.


CS  104  Cr.1

Elementary Spreadsheet Principles and Design

An introduction to the design and implementation of 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. Seven-week course.   Offered Occasionally.


+CS  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 MTH 175, or math placement test scores at or above MTH 151.  Offered Fall, Spring.


CS  202  Cr.3

Introduction to Web Design

This course is an introduction to Web page design and website management.  Students will be introduced to browser/server interaction, Web page design, techniques for creating media rich graphical interfaces, and ethical considerations regarding intellectual property rights and security. Students will receive hands-on experience in a variety of standardized Web technologies to develop dynamic, functional, and appealing Web pages. Prerequisite: CT 100 or CS 120 or familiarity with some programming language.  Offered Occasionally.


CS  220  Cr.4

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: CS 120.  Offered Fall, Spring.


CS  224  Cr.1 - 3

Introduction to 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.)   Offered Occasionally.


CS  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: CS 120.  Offered Fall, Spring.


CS  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. Prerequisite: CS 220.  Offered Fall, Spring.


CS  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: CS 340; MTH 225.  Offered Fall, Spring.


CS  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: CS 340.  Offered Spring - Odd Numbered Years.


CS  351  Cr.3

Simulation

Programming computers to play games and imitate activities of systems such as drive-in facilities, checkout 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. Prerequisite: CS 220; MTH 207.  Offered Occasionally.


CS  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 drawing algorithms, geometric transformation, Open GL, surface shaders, procedural shading, lighting models, photorealistic rendering, scene graphs, surface meshes and GPGPU computing. Prerequisites: CS 340 and MTH 207. Prerequisite: CS 340; MTH 207.  Offered Spring - Even Numbered Years.


CS  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. Prerequisite: CS 340; MTH 207.  Offered Fall - Even Numbered Years.


CS  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. Prerequisite: CS 220.  Offered Fall, Spring.


CS  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, pipelining, cache memory, memory hierarchy, memory and system buses, and I/O organization. Prerequisite: CS 270.  Offered Fall, Spring.


CS  395  Cr.1 - 3

Independent Study

Individualized study of topics in computer science not covered by courses regularly taught in the department. Repeatable for credit - maximum 6.   Offered Fall, Spring, Summer.


CS 402/502  Cr.3

Web Application Development

This course will give a detailed description of the core concepts and general principles of Web application development. The course will cover various protocols, programming languages, scripting languages, data storage and security, layered software architectures, and graphical interface design as they relate to Web development. Students will apply these techniques to the development of medium scale Web application. Prerequisite: CS 340; junior standing.  Offered Fall - Odd Numbered Years.


CS 410/510  Cr.3

Free and Open Source Software Development

This course examines all aspects of the Free and Open Source Software movement. The course surveys the various definitions of open source licenses and examples of major free and open source development projects (e.g. the GNU Project, Apache Foundation, Linux). The course also examines the development tools that support developer communities, as well as how Web-based applications have created the possibility of international development teams. Students will select and contribute to the software development of an existing open source project. Prerequisite: CS 340; junior standing.  Offered Spring - Odd Numbered Years.


CS 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.  Repeatable for credit - maximum 6.    Prerequisite: junior standing.  Offered Occasionally.


CS 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.   Prerequisite: CS 340; MTH 225; junior standing.  Offered Fall, Spring.


CS 431/531  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: CS 340; junior standing.  Offered Spring - Odd Numbered Years.


CS 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. Prerequisite: CS 340; CS 370; Junior standing.  Offered Fall, Spring.


CS 442/542  Cr.3

Structures 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. Prerequisite: CS 270; CS 340; Junior standing.  Offered Spring.


CS 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: CS 441; Junior standing.  Offered Fall - Even Numbered Years.


CS 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. Prerequisite: CS 340; Junior standing.  Offered Spring.


CS 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. Prerequisite: CS 341; Junior standing.  Offered Fall - Even Numbered Years.


CS 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: CS 340; Junior standing.  Offered Fall - Odd Numbered Years.


CS 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: CS 340; Junior standing.  Offered Fall - Odd Numbered Years.


CS 453/553  Cr.3

Introduction to 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: CS 340; Junior standing.  Offered Spring - Even Numbered Years.


CS 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: CS 340; Junior standing.  Offered Fall - Even Numbered Years.


CS 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 also are introduced, as are the legal and ethical issues associated with computer security. Students will be expected to apply the knowledge gained to construct security policies and practice security in the form of access privileges, firewalls, vulnerability scanners and intrusion detection tools. Prerequisite: CS 220; Junior standing.  Offered Fall - Odd Numbered Years.


CS 456/556  Cr.3

Secure Software Development

Traditionally, software engineering has viewed flaws as the inconsistency of software behavior with its functional requirements. Software security problems, however, can occur in software that contains no such flaws but is nonetheless susceptible to external attack. This course examines known reasons for software security vulnerabilities with an emphasis on best practices for their detection and mitigation, along with general principles for engineering software in ways that enhance security. Prerequisite: CS 340; junior standing.  Offered Spring - Even Numbered Years.


CS 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.   Prerequisite: CS 364; Junior standing.  Offered Spring - Odd Numbered Years.


CS 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: CS 370; Junior standing.  Offered Occasionally.


CS 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. Prerequisite: CS 270; CS 340; Junior standing.  Offered Spring - Even Numbered Years.


CS  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. Repeatable for credit - maximum 6.   Offered Fall, Spring.



COMPUTATIONAL THINKING (CT)


+ next to a course number indicate a GENERAL EDUCATION course


+CT  100  Cr.3

Introduction to Computational Thinking

Computational thinking represents a universally applicable collection of concepts and techniques borrowed from computer scientists. This course is designed to teach how to think algorithmically; to examine the ways that the world's information is encoded and how this impacts our lives; to explore the capabilities and limitations of computers from the past, the present and the future; to apply software design diagrammatic techniques to model real-world systems; to learn how the rules of logic apply to computation, reasoning and discourse; to examine how computers both enhance and constrain our lives; to explore many of the problem solving strategies used by software developers and how they are useful to you.   Offered Fall, Spring.