Select Page
Home » 2025-2027 Undergraduate Bulletin » Programs » Computer Science

Computer Science

 

Information

 

Website: www.uwosh.edu/cs/

COMP SCI

Faculty

Furcy
Hillberg
Krohn
Rogers
Summers
Thomas

Degrees

  • Undergraduate: A major in Computer Science or Software Technology can lead to the degree: Bachelor of Science. 
  • Graduate: None

Summary of Fields of Study

  1.  Goal(s)

Within three to five years after graduation, our typical alumni will:

  • Advance beyond initial entry-level positions as computing professionals or have made significant progress toward a graduate degree in computing.
  • Use the background they have acquired in a wide range of areas in computer science during their undergraduate study as a basis for continued growth of their professional knowledge and skills.
  • Use teamwork skills effectively in the development of complex software systems.
  • Use communication skills to advance within the organizational structure of workplaces that are becoming increasingly diverse and interconnected among different groups including, but not necessarily limited to, those groups based on racial, gender, age, and religious backgrounds.
  • Demonstrate strong professional ethics in all of their computing endeavors.
  1.  The Major(s)
    • Computer Science; Software Technology. 
  1.  The Minor(s)
    • Computer Science; Web and Mobile Development.
  1.  The Certificate(s)
    • Web Design; Computer Programming.

Admission/Graduation Requirements

  • To be eligible to declare a Computer Science Major, students must be currently enrolled in or have completed Computer Science 171 Object-Oriented Design and Programming.
  • To be eligible to declare a Software Technology Major, students must be currently enrolled in or have completed Computer Science 171 Object-Oriented Design and Programming or have an A.A.S. in Software Developer from an approved technical college.
  • To be eligible for graduation, students must meet all requirements for the degree being sought in addition to earning a minimum grade point average of 2.00 in all courses required for the Computer Science major, minor, certificate, or the Software Technology major. In addition to University and College requirements, students must have a minimum grade point average of 2.00 in those computer science courses numbered 300 or above that are used to satisfy the requirements of the Computer Science Major.

The Major(s), with Emphases and/or Options

The requirements for a major in Computer Science consist of the courses listed below. 

  1.  Computer Science Major
  • Focuses on knowledge and skills for the design, development, maintenance, and management of software, including software for the operation of instrumentation. It is appropriate for students preparing for careers as systems programmers, systems analysts, software engineers or computer-based instrumentation specialists.
      • Required Credits: 62 minimum
      • Required Courses:
        • Computer Science 131, 171, 212 or 281, 246, 251, 271, 310, 321, 331, 341, 351, 399 or 490
        • Philosophy 350
        • Interdisciplinary Studies 208
        • Mathematics 171, 172 or 256, 201 or 301
      • Electives: 9 credits from the following list:
        • Computer Science: 300, 321, 326, 332, 344, 346, 361, 371, 381 391, 480, 490
    • ABET Accreditation Requirement: 6 credits of natural science courses from the following:
      • Biology 105, 106, 108, 211, 212, 233, 304, 308, 309, 319, 321, 326, 332
      • Chemistry 105, 106
      • Geography 121, 221
      • Geology 102, 109, 110, 112, 150, 205
      • Physics 191, 192
    •  
  1. Software Technology Major
    • Focuses on knowledge and skills for web developer and application programmer positions.
      • Required Credits: 42 minimum
      • Required Courses:
        • Computer Science 131, 171, 246, 247, 271,341, 344, 346, 399
        • Information Systems 301 315 or 361, 316
        • Philosophy 350
        • Interdisciplinary Studies 208

The Minor(s)

  1. Computer Science Minor
    • Required Credits: 23 minimum
    • Required Courses:
      • Computer Science 171, 246, 251, 271
    • Electives: 9 credits from the following list:
    • Computer Science 300, 310, 321, 331, 341, 342, 344, 346, 361, 371, 381, 391, 421, 431, 480, 490
  1. Web and Mobile Development Minor
    • Required Credits: 22 minimum
    • Required Courses:
      • Computer Science 125, 142, 221, 247, 262, 344, 346

The Certificate(s)

  1. Web Design
    • This certificate provides students with exposure to web site development, usability design and basic programming. This should be of interest to students in all majors who might need basic programming and website design skills in their current fields of study.
      • Required Credits: 9 credits
      • Required Courses:
        • Computer Science 125, 142, 247
  1. Computer Programming
    • This certificate equips students with an in-depth understanding of programming fundamentals in a specific programming language. This should be of interest to students in any major, but especially Math, Science and Engineering Technology, who might need programming skills in their current fields of study.
      • Required Credits: 9 credits
      • Required Courses:
        • Computer Science 171, 246, 251 or 271

 

Course Offerings

Computer Science    100

3 (crs.)

AI for All

This course provides an introduction to Artificial Intelligence (AI), with a special emphasis on Generative AI. It covers the fundamental concepts, techniques and applications of AI, including an overview of problem-solving and machine learning. The course highlights how AI can address key challenges across various domains and generate new content such as text, images, and music. Additionally, students will explore the ethical, social, and economic implications of AI and gain hands-on experience through lab assignments and a significant team project. No prior experience in AI or programming is required.

 

 

Computer Science    105

3 (crs.)

Computer Applications

Principles and use of computer applications including word processors, spreadsheets, and databases. May also cover other applications such as telecommunications, graphics, statistics, simulations, or CAI. Does not include teaching of programming. Special course fees may apply.

 

 

Computer Science    120

3 (crs.)

Introduction to E-Commerce

This course will familiarize the student with the basics of e-commerce. Major topics include the basics of the internet, entrepreneurship, the creation of a business plan, financing, web site design, and e-business management. Students will develop a background in electronic commerce technology through exploring infrastructure and emerging technical issues in support of e-commerce.

 

 

Computer Science    125

3 (crs.)

World Wide Web Site Development (XS)

This is an introductory course on website design and development. Topics covered include: web history and protocols, front-end website development using HTML and CSS, and web design basics. The expectations for prerequisite knowledge are only basic computer skills. Not open to students who have completed COMP SCI 271 and/or 346.

 

 

Computer Science    125Q3

3 (crs.)

World Wide Web Site Development (XS)

This is an introductory course on website design and online branding. It covers elementary aspects of popular web development software packages. You will learn to create complete websites using responsive design and web services. The expectations for prerequisite knowledge are only basic computer skills.

 

 

Computer Science    131

3 (crs.)

Computational Thinking (XM)

This course introduces computational thinking, a problem-solving approach ubiquitous throughout Computer Science. Computational thinking involved structuring a given problem and its corresponding data in such a way so that it can be processed in an accurate, systematic and efficient manner by a computer. Computational thinking concepts emphasized will include: problem decomposition, abstraction, recognizing and analyzing patterns in data and formulation of efficient algorithmic solutions to problems. Computational thinking concepts will be applied to solve computer programming exercises using a real-world computer programming language. Computational thinking concepts will also be discussed in the context of sustainability, defined as “meeting the needs of the present without compromising the ability of future generations to meet their own needs…A world in which poverty and inequity are endemic will always be prone to ecological and other crises. Sustainable development requires meeting the basic needs of all and extending to all the basic opportunity to satisfy their aspirations for a better life.” (Brundtland Commission, United Nations, 1987). In this course, applications of computational thinking concepts will be applied to investigate the following signature question “How do people understand and create a more sustainable world?”

 

 

Computer Science    131Q1

3 (crs.)

Computational Thinking (XM)

This course introduces computational thinking, a problem-solving approach ubiquitous throughout Computer Science. Computational thinking involved structuring a given problem and its corresponding data in such a way so that it can be processed in an accurate, systematic and efficient manner by a computer. Computational thinking concepts emphasized will include: problem decomposition, abstraction, recognizing and analyzing patterns in data and formulation of efficient algorithmic solutions to problems. Computational thinking concepts will be applied to solve computer programming exercises using a real-world computer programming language. Computational thinking concepts will also be discussed in the context of sustainability, defined as “meeting the needs of the present without compromising the ability of future generations to meet their own needs…A world in which poverty and inequity are endemic will always be prone to ecological and other crises. Sustainable development requires meeting the basic needs of all and extending to all the basic opportunity to satisfy their aspirations for a better life.” (Brundtland Commission, United Nations, 1987). In this course, applications of computational thinking concepts will be applied to investigate the following signature question “How do people understand and create a more sustainable world?”

 

 

Computer Science    142

3 (crs.)

Introduction to Computer Science and Programming

In this course, students will be introduced to the science of computing. The history of Computer Science, Elementary computer organization, big ideas in computing, algorithmic problem solving, and introductory programming concepts will be discussed. Programming concepts include data types, expressions, input/output, conditional statements, repetition, data processing, procedures and basic object-oriented principles. Programming concepts will be taught through the use of a specific programming language. The course assumes no previous programming experience. Prerequisites: MATH 103, 112, 113 or 114 with a grade of C or better, or qualifying for either MATH 104 or 171 via Math Placement Test. Not open to students who have completed COMP SCI 271.

 

 

Computer Science    171

4 (crs.)

Object-Oriented Design & Programming

This introductory course covers problem solving, software design, and programming fundamentals. Topics include data types, input/output, control structures (selection, repetition), functions/methods, debugging, recursion, file I/O, as well as object oriented design concepts such as classes, encapsulation, inheritance, and polymorphism. Prerequisites: A grade of C or better in COMP SCI 131 or MATH 104, 108 or 206, or qualifying for MATH 171 via the Math Placement Test.

 

 

Computer Science    216

4 (crs.)

Problem Solving and Programming Techniques in C++

Program design using both modular and object-oriented methods. Topics covered to include stream I/O, recursion, multi-dimensional arrays, sorting and searching, pointers and dynamic memory allocation, classes and abstract data types, and operator overloading. Special course fees may apply.

 

 

Computer Science    221

3 (crs.)

Object-Oriented Design and Programming I

A first course in computer programming, problem solving and software design using an object-oriented language. Programming topics include: data types and variables, assignment and expressions, standard input/output, branches/selection, repetition, arrays, functions/methods, and objects. Problem solving and software design techniques include: algorithm development and pseudocode, debugging, and UML class diagrams. Prerequisites: A grade of C or better in MATH 104, 108 or 206 or COMP SCI 142, or qualifying for MATH 171 via the Math Placement Test. Special course fees may apply.

 

 

Computer Science    246

3 (crs.)

Software Tools and Technologies

An introduction to Internet and web technologies, and software development tools. Topics covered include: Internet foundations and the layered network architecture paradigm, the Hypertext Markup language, basic relational database operations, programming in a client-side language for the web, exposure to server-side programming, and modern software development tools and techniques such as version control software and unit testing frameworks. Prerequisites: A grade of C or better in COMP SCI 171 or 221.

 

 

Computer Science    247

3 (crs.)

Introduction to Usability

This course presents the theory of and techniques for design and usability, with an emphasis on human-computer interaction. Topics covered include: usability and user-centered design, user research, user-related psychology and cognitive aspects for design, prototyping, and evaluation techniques. Prerequisites: A grade of C or better in COMP SCI 142, 171 or 221. Special course fees may apply.

 

 

Computer Science    251

3 (crs.)

Computer Architecture and Assembly Language

This course aims to give students an overview of processor and memory hardware, and to teach them how high-level language programs map onto some Reduced Instruction Set Architecture or RISC computer. Students will learn how computer hardware supports the instruction set architecture. Students will be able to analyze why programs behave the way they do, how they can misbehave (e.g., buffer overflows), and how inefficiencies arise. Students will learn how to implement pointers and references in machine language. Prerequisite: A grade of C or better in COMP SCI 171 or 221. Special course fees may apply.

 

 

Computer Science    262

4 (crs.)

Object Oriented Design and Programming II

A second course in problem solving, software design, and computer programming using an object-oriented language. Problem solving/software design topics include: abstract data types, universal modeling language (UML), simple recursion, unit testing, event-handling, simple concurrency. Data structures and algorithms include: binary search, simple sorting algorithms, use of collection classes and their iteration protocols, sequential file processing. Additional topics include: inheritance, polymorphism, graphical user interfaces, simple use of threads. Prerequisites: MATH 108 or equivalent with a grade of C or better or qualifying for a higher-level Math course via the Math Placement Test, and COMP SCI 221 or equivalent with a grade of C or better. Special course fees may apply.

 

 

Computer Science    271

4 (crs.)

Data Structures

This course introduces advanced object-oriented design techniques and covers fundamental concepts, implementation, and analysis of data structures essential for algorithm design. Topics include abstract classes, interfaces, generics, and various data structures such as linked lists, stacks, queues, trees, heaps, hash tables, and graphs. Analysis covers asymptotic analysis and empirical performance measurements. Prerequisites: Grade of C or better in COMP SCI 171 or 262 and MATH 108 or equivalent. Special course fees may apply.

 

 

Computer Science    281

3 (crs.)

Discrete Structures

This course focuses on discrete mathematical structures that are essential to computer scientists. In this course, students will develop their analytical and algorithmic thinking skills through practice with propositional and first-order predicate logic, various proof techniques, mathematical and structural induction, sets, functions, sequences, recurrence relations, algorithm analysis and computational complexity, the basics of counting, and in introduction to discrete probability. Prerequisites: Grade of C or better in COMP SCI 171 or 262 and MATH 171 or 206. Special course fees may apply.

 

 

Computer Science    291

1 – 3 (crs.)

Special Topics in Computer Science

In-depth treatment of subjects introduced in other COMP SCI courses. Choice of topics depends on student interest, staff and equipment availability. Typical topics include file handling, operating systems, social implications, simulation, management tools, specialized languages, current technology, numerical methods, artificial intelligence and digital logic.

 

 

Computer Science    299

1 – 3 (crs.)

Intermediate Independent Study

Independent study under the supervision of an instructor. The work may, for example, consist of advanced laboratory investigation into a particular topic or library research and writing of a paper on some subject of interest.

 

 

Computer Science    300

3 (crs.)

Artificial Intelligence

This course is an introduction to the field of artificial intelligence. It is a survey of classical search in artificial intelligence and machine learning and an in-depth examination of a specific application area such as robotics, theorem proving, computer vision, natural language processing, etc. Students are expected to demonstrate mastery via computer programs using the techniques of artificial intelligence. Prerequisite: COMP SCI 271 with a grade of C or better. Special course fees may apply.

 

 

Computer Science    310

3 (crs.)

Computer Organization and Design

An introduction to digital logic and computer hardware organization. Emphasis is given to the design of Central Processing Units, Arithmetic and Logic Units, and main memories. Prerequisites: A grade of C or better in COMP SCI 251. Special course fees may apply.

 

 

Computer Science    314

1 (crs.)

Participation in Programming Competition

This course is taken by students participating in the November ACM International Collegiate Programming Contest. During the course and prior to their participation in the contest, students practice team-orientated problem-solving strategies in areas that often arise in the problems that are given during the contest. These areas include data structures, string manipulation, combinatorics, graph algorithms, dynamic programming, and computational geometry. Special course fees may apply.

 

 

Computer Science    321

3 (crs.)

Algorithms

An introduction to the design and analysis of algorithms. Algorithm analysis topics include asymptotic analysis, recurrence relations, loop invariants, and amortized analysis and parallel algorithms. Algorithm design techniques include divide and conquer, the greedy method, and dynamic programming. Additional topics include graph algorithms and NP-completeness. Prerequisite: A grade of C or better in COMP SCI 212 or 281 and COMP SCI 271. Special course fees may apply.

 

 

Computer Science    326

3 (crs.)

Computer Security

This course is an introduction to computer security with an emphasis on software design principles and technical controls that help secure computer systems. After discussing foundational concepts in information security and assurance (e.g., the CIA triad, authentication, nonrepudiation, threats, attack vectors, risk assessment, security controls, plans, and policies), we will delve into the following topics: principles of secure software design and defensive programming, authorization and access control, and cryptography. Prerequisites: A grade of C or better in COMP SCI 271. Special course fees may apply.

 

 

Computer Science    331

3 (crs.)

Programming Languages

This course provides an introduction to fundamental issues in the design and implementation of programming languages. It covers the following topics: grammars and formal syntax; the functional programming paradigm, including the MapReduce model applied to some data-parallel computations; recursion; scope and lexical structure of programs; the lambda calculus as a formal model of functional languages; writing interpreters for small languages; evaluation order and parameter-passing; type systems.  Prerequisite: COMP SCI 271 with a grade of C or better. Special course fees may apply.

 

 

Computer Science    332

3 (crs.)

Compilers

An introduction to compiler writing techniques for translating a higher-level programming source language into a lower-level target language. Topics to be covered include: definition of programming languages, lexical and syntactic analysis, low level code generation and optimization, run time systems, and error detection, reporting, and recovery.  A major programming project will be assigned to provide experience with compiler design. Prerequisites: A grade of C or better, or concurrent registration, in COMP SCI 331. Special course fees may apply.

 

 

Computer Science    341

3 (crs.)

Software Engineering

Students will study the history and theory of software engineering and apply that theory by implementing, in teams, an extensive software project. Topics will include traditional and modern software development processes, and the tools and techniques that they will encounter in industry. Prerequisite: COMP SCI 271 with a grade of C or better; or Junior level standing and COMP SCI 262 or 246 with a grade of C or better. Special course fees may apply.

 

 

Computer Science    344

3 (crs.)

Mobile Application Development

An introduction to the tools and techniques for developing mobile applications. Topics covered include: history of mobile development, app creation using a modern IDE, deployment to an emulator and/or physical device, building a responsive user interface, understanding the application lifecycle, asynchronous programming, interfacing with databases and web services, and deploying a completed app. Over the course of the semester students will design and implement a substantive mobile application. Prerequisite: COMP SCI 262 or 246 with a grade of C or better. Special course fees may apply.

 

 

Computer Science    346

3 (crs.)

Web Software Development

An introduction to the tools and techniques for doing full-stack web development. Topics covered include: web history and protocols, client-side development using HTML, CSS and a scripting language; and server-side development with database integration. Prerequisite: COMP SCI 262 or 246 with a grade of C or better. Special course fees may apply.

 

 

Computer Science    350

1 (crs.)

Ethical Issues in Computing

A study of the evolution of computing, its implications for society, and the ethical issues underlying those implications. This course will focus on reading the current literature regarding these issues and on presenting the pros and cons of such issues in both oral and written fashion. The course is required for all Computer Science majors in the Computer Science Emphasis and is strongly recommended for all Computer Science majors. Prerequisites: Junior standing and completion of COMP SCI 262 with a grade of C or better. Special course fees may apply.

 

 

Computer Science    351

3 (crs.)

Operating Systems

An introduction to operating systems concepts. Topics covered include: interrupts, memory allocation, virtual memory techniques, process scheduling and synchronization, deadlocks, resource allocation, and file systems. A major programming project will be assigned to provide experience with operating system design. Prerequisite: A grade of C or better in COMP SCI 251 and 271. Special course fees may apply.

 

 

Computer Science    361

3 (crs.)

Database Systems

An introduction to database processing with emphasis on database techniques, design, and modeling. Programming projects include implementation of selected database processing methods and the use of database software. Prerequisite: A grade of C or better in COMP SCI 271. Special course fees may apply.

 

 

Computer Science    371

3 (crs.)

Computer Graphics

An introduction to the mathematics, data structures, and algorithms used to create graphical output in the programmable pipeline. Topics include graphics hardware, shaders, transformations in two and three dimensions, three-dimensional viewing, modeling three-dimensional shapes with polygon meshes, hierarchical modeling of three-dimensional objects, lighting and shading techniques, raster algorithms. Prerequisite: COMP SCI 262 or 246 with a grade of C or better. Special course fees may apply. 371/571

 

 

Computer Science    381

3 (crs.)

Introduction to the Theory of Computing

An introduction to the basic concepts in the theory of computing. Topics covered will include automata theory, formal languages, Turing machines, the Chomsky Hierarchy, and undecidability. Prerequisite: A grade of C or better in COMP SCI 271, and COMP SCI 212 or 281. Special course fees may apply.

 

 

Computer Science    391

3 (crs.)

Computer Networks

A course which covers the basic concepts in computer networks. Topics covered will include the nature of data communication, characteristics of computer networks, the ISO-OSI network protocol layers, and network performance considerations. Prerequisite: A grade of C or better in COMP SCI 251 and 271. Special course fees may apply. 391/591

 

 

Computer Science    399

3 (crs.)

Internship in Computer Science

An internship experience with a cooperating organization or corporation to provide on-the-job learning. The student must be involved in a large software development effort. The internship guidelines and application form are online.  Prerequisites: 75 credits toward graduation, at least six credits of 300-400 level Computer Science courses, and completion of INTRDSCP 208 with a passing grade.

 

 

Computer Science    446

1 – 3 (crs.)

Advanced Independent Study

See Independent Study under Course and Academic Advisement information for general course description, general prerequisites, and proper contract from requirements. Special course fees may apply.

 

 

Computer Science    474

3 – 6 (crs.)

Honors Thesis

The Honors Thesis is one of two options offered to Honors students to meet the senior capstone requirement of The Honors College. Students who choose the thesis engage in research as an independent study over two semesters (fall/spring or spring/fall) with the support of a faculty advisor. They decide on a topic in their major or minor, address recent scholarship, develop a prospectus, and produce substantial work (e.g., a written thesis, scientific experiment or research project, or creative arts exhibit or production). At the end of the term in which the capstone is completed, students give presentations at the Honors Thesis Symposia. Credits are applied to the respective program. Prerequisites: In good standing with The Honors College, prior enrollment in HNRS 175Q and HNRS 275Q, and senior status. Special course fees may apply.

 

 

Computer Science    480

3 (crs.)

Special Topics in Advanced Computer Science

A topic of current interest in computer science will be investigated by faculty and qualified students. In addition to lectures by faculty, the students will be responsible for research and presentation of selected aspects of the topic. Graduate students will be required to do an extra programming project or paper. Prerequisite: Junior-level standing and instructor consent. Special course fees may apply.

 

 

Computer Science    490

3 (crs.)

Practicum in Computer Science

A course in which students use and go beyond the material learned in previous Computer Science courses in order to complete a research project or develop new software under the supervision of a Computer Science faculty member. The practicum guidelines and application form are online. Prerequisites: 75 credits toward graduation, at least six credits of 300-400 level Computer Science courses and completion of INTRDSCP 208 with a passing grade. Special course fees may apply.

 

 

Computer Science    499

0 (crs.)

Computer Science Assessment

Students will take the Educational Testing Service Major Field Test (MFT) in Computer Science. Required of all students in the Computer Science emphasis. Those who take the test will receive a passing grade. Prerequisite: Standing final semester of senior year or instructor consent. Pass/Fail