You are here

Computer Science: Undergraduate Programs

Overview: 

The Bachelor of Science (BS) degree will prepare the Computer Science student for employment in an exciting field with tremendous opportunities now and in the future as technology expands through all areas of our lives, both at home and at work. Our program is fairly traditional offering a solid foundation in programming, data structures, programming languages, systems, and theory to prepare students to either continue their studies in graduate school or enter the workforce. Additionally, our faculty have a variety of research interests and offer classes related to their research and offer research opportunities for undergraduates.

The strengths of the undergraduate program are curricular emphasis on the foundations of computing including both software development and theory, excellent teaching and advising support to guide students toward graduation, and opportunities to interact with graduate faculty through both upper-level courses and research. Our graduates are well prepared to either enter the job market or go on to graduate school. The curriculum is traditional in nature with a focus on software languages and systems, while also providing a strong basis in theory starting at the sophomore level and continuing through to graduation. A fairly small number of electives are available based on faculty research.

Undergraduate research opportunities exist through contact with individual faculty members. Through a seminar that may be taken twice, starting in their freshman year, students learn about current research in the department and make contact with graduate faculty. This seminar is effective in both making students aware of what research is and in providing early access to graduate faculty.

 

Expected Learning Outcomes: 

The Computer Science Department defines the following goals and student learning outcomes for its Bachelor of Science degree.

Goal 1:  Develop Computational Solutions

  1. Design, implement, test, and debug programs.
  2. Understand and appropriately apply multiple computing paradigms.
  3. Use software development tools.

Goal 2:  Apply Mathematical Methodologies to Solve Computational Tasks

  1. Model a variety of real-world problems using appropriate data structures.
  2. Select algorithms appropriate to particular purposes and apply them.
  3. Understand the central concepts and skills required to design, implement, and analyze algorithms for solving problems.

Goal 3: Understand the Structure and Functioning of Software Systems

  1. Have in-depth knowledge of, and ability to build, a large software system.
  2. Leverage existing software systems in the development of new systems.

Assessment Map

A preview of the courses in which learning outcomes will be directly measured.

Required Courses Develop Computational Solutions Apply Mathematical Methodologies to Solve Computational Tasks Understand the Structure and Functioning of Software Systems
 127B or 227   1a  1b  2a  2b  2c  
 335  1a  1b  1c    3a
 345    2a  2b  2c  
 352  1b  1c    3b
 452 or 453      3a 

 

Assessment Activities: 

We will directly measure our success at achieving our learning outcomes using a combination of programming projects and exam questions.  For each, a scale of 1 through 4 will be used to indicate mastery: "unacceptable," "marginal," "good", and "outstanding," respectively.  We leave to the instructor of each course, the task of mapping programming project and test question grades to this 1 - 4 scale. The means by which each instructor rates the achievement of the learning outcome will be supplied along with the data during the Assessment Findings and Changes in Response to Findings phase.

This list of 16 direct measures includes the name of the instructor and the semester in which the data will be gathered. Bridget Radcliff, Manager Academic Services and Student Support, will gather and aggregate this data and prepare a report for faculty to consider and make changes that appear warranted. This meeting will be held in April.

Direct Measures

CSc 127B: Introduction to Computer Science or CSc 227: Program Design & Development

1a A representative programming project that measures students ability to design, implement, test, and debug programs.  (Larry Peterson, Fall 2014)

2a Two programming projects that solve real world problems using appropriate data structures such as arrays, linked structures, or binary trees.  (Rick Mercer, Spring 2015)

2b Test questions in the form of writing code to apply an algorithm to that specific problem. (Larry Peterson, Fall 2014)

2c Test questions that measure central concepts and skills to design, implement, and analyze algorithms for solving problems. (Larry Peterson, Fall 2014)

CSc 252: Computer Organization

1b Representative programming project that measures student ability to write a program using an assembly level programming language.  (Patrick Homer, Fall 2014)

CSc 335: Object-Oriented Programming and Design

1a Representative programming project that measures student ability to design, implement, test and debug programs. (Rick Mercer, Fall 2014)

1b A second representative programming project that measures student ability to write a program in the Object-Oriented paradigm.  (Rick Mercer, Fall 2014)

1c Select portions of grading criteria from several programming projects to measure student ability to use software tools such as: UML modeling, compiler, IDE, debugger, testing framework, and source code management tool. (Rick Mercer, Fall 2014)

3a Measure students' ability to build a large software system using the grading criteria for the final project that is completed over five to six weeks with a dozen or more classes and several thousand lines of code.  (Rick Mercer, Fall 2014)

CSc 345: Analysis of Discrete Structures

2a Two different programming projects that solve computational problems using appropriate data structures such as a hash table, tree, heap, or graph.  (John Kececioglu, Fall 2014)

2b A representative programming project or test questions in the form of writing code to apply an algorithm to that problem.  (Stephen Kobourov, Spring 2015)

2c Exam or homework questions that measures central concepts and skills to design, implement, and analyze algorithms for solving problems.  (John Kececioglu, Fall 2014)

CSc 352:  Systems Programming and Unix

1b A representative programming project written in the C programming language to indicate proficiency in the Procedural/Imperative Paradigm. (Patrick Homer, Fall 2014)

1c Test questions or an assignment on the software development tools used in 352 such as makefiles, debuggers, and code profilers.  (Todd Proebsting, Spring 2015)

3b A programming project whose development includes the use of tools such as makefiles, debuggers, and code profilers.   (Patrick Homer, Fall 2014)

CSc 452: Principles of Operating Systems or CSc 453: Compilers and Systems Software

3a Measure student performance using the existing grading criteria for the large final project in either 453 Operating Systems or 453 Compilers.   (Saumya Debray, Fall 2014)

Indirect Measure

Anonymous survey that asks

  • Students' perceptions of mastery of the eight learning outcomes using a Likert scale
  • Availability and effectiveness of advising
  • What should the Computer Science degree program keep doing
  • What should the Computer Science degree program stop doing
  • What should the Computer Science degree program start doing
Assessment Findings: 

We will be collecting data during the 2014-15 academic year and completing this section after data has been collected and discussed.

Change in Response to Findings: 

We will be collecting data during the 2014-15 academic year and completing this section after data has been collected and discussed.

 

Updated date: Wed, 08/09/2017 - 14:42