COMPUTER SCIENCE (CS)
College of Science and Health
Department Chair:
Steve Senger
221 Wing Technology Center
608.785.6805
e-mail:
senger.stev@uwlax.edu
Professors: Headington, Periyasamy, Riley, Senger;
Associate Professors:
Gendreau, Hunt, Zheng;
Assistant Professor:
Allen;
Lecturers: Burand, Inglett
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) — 40 credits – (53 total credits including MTH) CS
120, 220, 270, 340, 341, 370, 421, 441, and 442. The 40 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 40 credits, MTH 207, 208
and 225 must be taken.
Computer Science Major: Computer Engineering
Technology Emphasis
(Students must have completed Associate in
Applied Science Degree requirements for Electrical Engineering
Technology Western Technical College with a grade point average
of 3.0 or above) — 37 credits – (50 credits including MTH) CS
120 or Java I(WTC-107 153), CS 220 or Java II (WTC-107 181), CS
340, 341, 370, 441, 455, 471. The 37 credits must include no
less than 27 credits of 300-level and 400-level courses. PHY
335, MTH 317 and/or 371 may be used as part of the 37 credit
major. Visual Basic I(WTC-107-190) may be completed at WTC in
place of CS 224, MTH 207, 208, and 225 must be taken in addition
to 37 credits in major; the MTH 207 and 208 requirements are
fulfilled by completing Calculus I (WTC-804180) and Calculus II
(WTC-804-181). No more than four credits of internship (CEI)
course work can be counted toward this program. 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) — 38 credits
– (51 total credits including MTH) Major Core: CS 120,
220, 270, 340, 341, 370, 421 or 441 and MTH 421. The 38 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 38 credit major. In addition to the 38
credits, MTH 207, 208, and 225 are required (13 credits).
Click here for additional teacher certification requirements.
Computer Science Minor
(All colleges, excluding Teacher Certification
programs) — 19 credits – CS 120, 220, 340, and MTH 225. The 19
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.
Computer Science Education Minor
(Teacher Certification programs) — 19 credits
– CS 120, 220, 340, 341, and MTH 225. The 19 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.
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 B.S. 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 B.S. 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 40
credit hours of computer science required for the B.S. 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
credits 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 M.S.E. degree will
occur after the completion of the B.S. and M.S.E. 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.
|
|
|
|
+ above a course number indicates a
General Education
course.
Computational Thinking (CT)
+
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 and Spring.
Computer Science (CS)
+
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 Fall, Spring, Summer.
CS
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 such
as privacy, security, accessibility, intellectual property, and
censorship. Credits earned in CS 102 not applicable to the CS
major or minor. Prerequisite: CS 101 or 120. 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. Course not open
to those who have completed CS 101. Seven-week course. Offered
Fall, Winter.
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. Course not open
to those who have completed CS 101. Seven-week course. Offered
Fall, Winter.
+
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 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. 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: CS 120. Offered Fall,
Spring.
CS
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 six. (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. Prerequisites: CS 120, MTH 225 or concurrent
enrollment. Offered Fall, Spring.
CS
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.
Offered occasionally.
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. Prerequisites: CS 220 and MTH 225.
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. 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. Prerequisites: CS 220 and 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 transformations, OpenGL, surface shaders,
procedural shading, lighting models, photorealistic rendering,
scene graphs, surface meshes and GPGPU computing. Prerequisites:
CS 340 and 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. Prerequisites: CS 340 and 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.
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. Prerequisites: CS 270 and MTH 225.
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. Prerequisite: written consent of the instructor and
the department chair. Repeatable for credit — maximum six.
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 or consent of instructor.
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. 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. Prerequisite: consent of instructor. Repeatable
for credit — maximum six. Offered Fall, Spring, Summer.
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. 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. 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. Prerequisites: CS 340 and 370. Offered Fall, Spring.
CS
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: CS 270 and 340. Offered Spring.
CS
443/543
Cr. 3
Topics in Operating Systems
An intermediate course in operating systems
extending topics introduced in CS 441. Operating systems
concepts are studied in depth. Typically students will study and
modify an existing system. Prerequisite: CS 441. 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.
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. 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.
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. Offered Fall,
odd-numbered years.
CS
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: CS 340. 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. 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. 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. 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. 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. 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. Prerequisites: CS 270
and 340. Offered Spring, even-numbered years.
CS
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: CS 224 or CI
420. Offered occasionally.
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.
Prerequisite: consent of computer science staff. Repeatable for
credit — maximum six. Offered Fall, Spring.