Academic Catalog

Computer Science (CSCI)

CSCI 101  Introduction to Computer Science  3.00  
A first course in computer science providing a survey of current topics as well as core programming and related problems solving skills. Satisfies the mathematics requirement for University Studies.
Prerequisites:
    Prerequisite for taking this course is the Mathematics Placement Test, or successful completion of MATH 090
  
University Studies Requirements:
  • Math/Computer Science
  
CSCI 170  Programming and Technology for the Teaching of Mathematics  3.00  
Graphing and analysis of functions using graphing calculators, structured programming, use of software packages such as SAGE, Alice, and Geogebra.
Prerequisites:
    Acceptable score on the Mathematics Placement Test or completion of MATH 115 with grade of at least C-.
  
CSCI 189  Computer Science Elective  1.00-12.00  
Transfer credits ONLY from another accredited institution not equivalent to a UW-S course.
CSCI 201  Introduction to Programming  3.00  
A first programming course for students with a serious interest in computing. Topics include: data types and variables; memory and representation of data; control structures; primitive and reference data types; methods and modular programming; introduction to abstract data types and classes, and encapsulation; simple algorithms; recursion; and programming conventions and style all done in a formal programming language.
Prerequisites:
    Completion of MATH 095 with a grade of C- or better or Mathematics Placement Test of MATH 112 or higher.
  
CSCI 202  Object-Oriented Programming  3.00  
Continuation of CSCI 201. Programming course emphasizing programming from an object-oriented perspective and software development principles. Topics include: data structure fundamentals; exception handling; abstraction and encapsulation; inheritance and polymorphism; pointer and reference variables; memory management, operator overloading, concurrent programming; various important algorithms; and file processing techniques.
Prerequisites:
    Prerequisite for taking this course is having completed CSCI 201 with a grade of C- or better.
  
CSCI 224  Assembly Language Programming  4.00  
Fundamentals of Assembly language programming with an emphasis to microcontroller programming. Topics include: binary representation of numbers and strings, fundamentals of ARM microcontroller architecture; types of memory; access; arithmetic and logical operations; conditional processing; functions and procedures; bit and string processing; recursion and stack manipulation; floating-point programming; interrupt handling; hardware configuration; fundamentals of C programming language; combining assembly with C. Lecture and Lab.
Prerequisites:
    Prerequisite for taking this course is an acceptable score on the Mathematics Placement Test or completion of an appropriate course. MATH 113 recommended.
  
CSCI 281  Special Projects  1.00-4.00  
Individual project to learn a programming language not normally offered in the current array of programming courses. Requires weekly progress reports and demonstration of learned skills through a project under the supervision of one or more instructors. May be repeated, but no more than a total of 12 credits may be earned from CSCI 281. Pass-Fail only. Prerequisites: Preliminary project plan and an independent study contract.
CSCI 289  Computer Science Elective  1.00-12.00  
Transfer credits ONLY from another accredited institution not equivalent to a UW-S course.
CSCI 303  Algorithms and Data Structures  4.00  
Continuation of CSCI 202. Concepts and implementation techniques for various algorithms and related data structures of particular interest to computer scientists; counting techniques and analysis of the complexity (efficiency) of algorithms. Topics include: stacks and queues, hashing, graphs and trees, data compression, game strategy, and related algorithms.
Prerequisites:
    CSCI 202 with a grade of C- or better is prerequisite for taking this course.
  
CSCI 327  Embedded Systems Design  3.00  
A firmware and hardware development course for students with a serious interest in Micro-controller programming, Embedded Systems, or Engineering. Topics include: assembly and/or C programming of micro-controllers, interrupt processing, basic hardware and logic design, programming micro-controller peripherals like ADC, DAC, timers, PWM, comparators, programming and using serial interfaces, communication with user, basics of printed boards design.
Prerequisites:
  
CSCI 331  Computer Graphics and Game Design  3.00  
Programming course emphasizing the implementation of fundamental data structures and algorithms, as well as the use of third-party modeling software and modern game engines, to represent and render 3D graphics. Topics include: color and output devices; 3D geometry and linear algebra; physics of motion and gravity; convexity and collision detection; lighting and shadow; texture maps; and keyframe animation.
Prerequisites:
    The prerequisite for taking this course is having completed CSCI 201.
  
CSCI 340  Software Development and Professional Practice  4.00  
Best practices in the field of software development. Students complete a medium-scale software project as members of a development team. Topics include: professional ethics and responsibilities; multi-tier systems; software life cycle; requirements analysis; system modeling; implementation and testing; re-engineering and maintainability. Both traditional (waterfall) and newer (agile) methodologies; design patterns; use of current technologies for programming, project management, and source archiving.
Prerequisites:
    Prerequisite for taking this course is having completed CSCI 303
  
CSCI 351  Internet Programming  3.00  
Internet technologies for the World Wide Web such as XHTML, DHTML, CSS, CGI, JavaScript, and HTML5. Topics include: composing XHTML/XML web pages; page layout control with cascading style sheets, form processing and validation, working with images and JavaScript based animation, fundamentals of CGI programming under Unix/Linux environment, server-side programming with Perl and PHP; server configuration issues; and database access.
Prerequisites:
    The prerequisite for taking this course is having completed CSCI 201.
  
CSCI 356  Database Systems  3.00  
Information Management (IM) plays a critical role in almost all areas where computers are used. The course discusses the representation, organization, transformation, and presentation of information; algorithms for efficient and effective access and updating of stored information; data modeling and abstraction; relational algebra and Structured Query Language (SQL); and database design, implementation, querying, and administration. Pre-requisite: Having completed CSCI 201 is recommended when enrolling in this course.
CSCI 370  Computer Security  3.00  
A course in modern computer security and how to write secure programs. Topics include computer security, authentication, basic cryptography, identifying and stopping program threats, hacking, and secure software development.
Prerequisites:
  
CSCI 381  Special Projects  1.00-4.00  
Various individual and small-group projects carried out under the supervision of one or more instructors. Requires weekly progress reports plus a final report and/or a final exam. May be repeated, but no more than a total of four credits may be earned from both MATH 381 and CSCI 381. Pass-Fail only. Preliminary project plan and an independent study contract required prior to enrollment.
CSCI 389  Computer Science Elective  1.00-12.00  
Transfer credits ONLY from another accredited institution not equivalent to a UW-S course.
CSCI 390  Computer Science Internship  1.00-4.00  
Work in an approved position to gain experience in solving real problems using computer science. Interns may receive salaried appointments with cooperating companies. Pass-Fail only.
CSCI 451  Operating Systems  4.00  
In-depth study of the concepts, issues, and algorithms related to the design and implementation of operating systems. Topics include: process management, process synchronization and inter-process communication; memory management; virtual memory; interrupt handling; processor scheduling; device management; I/O; file systems; and introduction to networking and network security. Students conduct programming projects and case studies to investigate modern operating systems such as Solaris, Linux, and Windows.
Prerequisites:
    The prerequisite for taking this course is having completed CSCI 201.
  
CSCI 461  Computer Architecture  4.00  
In depth study of fundamentals of computer hardware organization. Topics include: digital logic and circuits; hardware optimization principles; finite state machines; computer arithmetic, machine instructions and assembly language; pipeline design, parallelism and micro-programming; memory management and design; storage system design; I/O modules, operating system support; structure and function of computer processors, RISC vs. CISC architecture.
Prerequisites:
    Prerequisite for taking this course is having completed CSCI 224.
  
CSCI 470  Net-Centric Computing  4.00  
Introduces the structure, implementation, and theoretical background of computer networking. Topics include: the ISO/OSI reference model and protocol stack, implementation details of various network protocols, routing algorithms, wireless challenges and protocols, mobility management, broadcasting and multicasting, multimedia networking, introduction to network security, Bluetooth application development for microcontrollers and mobile devices.
Prerequisites:
    The prerequisite for taking this course is having completed CSCI 201.
  
CSCI 481  Special Topics  1.00-4.00  
Investigation of one or more topics of current interest not covered in other courses. Not intended for independent study projects. May be repeated, but no more than a total of eight credits may be earned from both MATH 481 and CSCI 481.
CSCI 489  Computer Science Elective  1.00-12.00  
Transfer credits ONLY from another accredited institution not equivalent to a UW-S course.
CSCI 498  Individual Capstone Project  1.00  
Students carry out a project under the supervision of a faculty member, write a report, and present the results to the entire department. Taken during senior year.
CSCI 499  Group Capstone Project  3.00  
Group projects in software engineering are carried out by students under supervision of a faculty member to serve community organization. Qualifies as an Academic Service-Learning course (see Academic Service-Learning for more details).
Prerequisites:
    The prerequisite for taking this course is having completed CSCI 340.