CSE 174 Fundamentals of Programming and Problem Solving (3 credits)

Typically offered during both the fall and spring semesters.

Catalog description:

Algorithm development and refinement in problem solving. Modular programming using sequence, selection, and repetition control structures. Program debugging and testing. Formatted input/output. Data files. Fundamental data types. User-defined data types: structured and enumerated. Arrays and arrays of structures. Simple sorting and searching algorithms. Character data and string processing. Algorithm efficiency considerations. Classes, objects, and introduction to object-oriented programming. 2 Lec. 1 Lab.


ACT Mathematics score of 22 or higher, or SAT Mathematics score of 520 or higher, or completion or current enrollment in MTH 104 or MTH 123 or MTH 125 or MTH 151 or MTH 249 or MTH 251

CSE 174 is a first-tier course in the CSE2 "Computer Programming" thematic sequence.

Computer software plays an important role in our daily lives: Our mobile phones, laptop computers, online banking, Internet applications such as YouTube, video games and movies, cars, and almost all aspects of daily life are touched by software. In your personal and professional life you will utilize computer software. It is also likely that you will select, or even influence the design of, software that is used in your professional or personal life. This thematic sequence will give you a deep understanding of how software works and is created, its limitations, and its potential. You will be able to read software and therefore be able to make informed decisions when selecting or participating in the design of business, scientific, or information systems that utilize computer software.

The CSE2 thematic sequence consists of both of the following introductory computer programming courses.

  • CSE 174, Fundamentals of Programming and Problem Solving
  • CSE 271, Object-Oriented Programming

Followed by one of the following courses

  • CSE 274, Data Abstraction and Data Structures
  • CSE 252, Web Application Programming
  • CSE 283, Data Communications and Networks

CSE 174 is a course in which you learn computer programming concepts that are fundamental in nearly any computer programming language.  These concepts can then be used in other courses to help you create computer applications that can be used to solve real-world problems 

CSE 174 is a first-tier course in the CSE4 "Web and Game Applications" thematic sequence.

Given the prevalence of computing devices, it is important that we understand what computers do and how they do it. The web game applications thematic sequence is designed to provide students with an understanding of how computer software is created and designed and how it functions to make possible popular applications such as computer games and the World Wide Web. Courses in the sequence provide an introduction to fundamental programming concepts.  These concepts are applied to create computer games and web applications.

The CSE4 thematic sequence consists of one of the following introductory computer programming courses...

  • CSE 153, Introduction to C/C++ Programming
  • CSE 163, Introduction to Computer Concepts and Programming
  • CSE 174, Fundamentals of Programming and Problem Solving

Followed by both of the following courses...

  • CSE 251, Introduction to Game Programming
  • CSE 252, Web Application Programming

CSE 174 is a course in which you learn computer programming concepts that are fundamental in nearly any computer programming language.  These concepts can then be used in other courses to help you create computer applications that can be used to solve real-world problems

Required Topics (approximate weeks allocated):

  • Programming Languages and the Programming Environment (0.5)
    • Syntax and semantics of programming languages
    • Functions of a compiler
    • Interpreted vs compiled code
    • Computer architecture
    • Languages and translation
    • Data representation
  • Basic Language Elements (2.0)
    • Types, operators, variables, constants
    • Strings
    • Type conversion
    • Interactive input/output
  • Control Structures (3.0)
    • Sequence
    • Selection
    • Iteration
  • Testing and Debugging (1.0)
    • Syntax vs. run-time errors
    • Testing and debugging strategies
    • Test case selection
    • Use of a debugging tool
  • Classes and Methods (2.5)
    • Information hiding and encapsulation
    • Methods
    • Parameter passing
    • Variable lifetime and scope
  • Design (2.0)
    • Methods
    • Classes
  • Arrays and Algorithms (3.0)
    • Single and two-dimensional arrays
    • Searching arrays: linear and binary
    • Objects and arrays of objects
    • Sorting array elements (e.g. bubble, selection or insertion)
  • Examinations (1)

Course Outcomes

1: Use and describe a contemporary programming language and programming environment.

1.1: Describe the process of program translation from source code to intermediate or executable representation

1.2: Describe the concepts of syntax and semantics of a programming language

1.3: Describe and compare rules associated with declarations, including scope and lifetime, for program constructs such as variables, functions, and methods

1.4: Describe the data representation commonly used for integers, floating point values, booleans, characters, and strings

1.5: Format and comment source code that adheres to a given set of formatting guidelines

1.6: Use command line tools to invoke the compiler and compiled executables

1.7: Use an Integrated Development Environment (IDE) to write computer programs

2: Identify and eliminate errors in programs

2.1: Describe the difference between a compiler error, run-time error, and logic error

2.2: Read errors reported by the compiler and use those error messages to correct the syntax

2.3: Use techniques and tools for debugging programs

2.4: Design and document a complete set of test cases and use this to identify logic errors

2.5: Read and analyze code written by others, and identify errors in that code

3: Specify, trace, and implement programs written in a contemporary programming language that solve a stated problem in a clean and robust fashion

3.1: Select appropriate primitive data types to represent information

3.2: Trace and use the common arithmetic operators within expressions that use parentheses and operator precedence

3.3: Describe, trace, and implement programming control structures including pretest and posttest loops, counter-controlled loops, and conditionals

3.4: Use control structures, nested and un-nested

3.5: Use console and file input and output in a program

3.6: Use one-dimensional and two-dimensional arrays

3.7: Use 3rd party class definitions, including those that represent strings, produce random numbers, perform math functions, format strings, perform console input and output, and ArrayLists

4: Solve programming problems using a procedural approach

4.1: Create and implement an algorithmic approach to a problem using functional decomposition

4.2: Determine necessary/desirable functions along with their needed structure (parameters, return types, etc.)

5: Describe, trace, and implement basic algorithms

5.1: Describe, trace, and implement linear search, non-recursive binary search, and at least one non-recursive sorting algorithm

5.2: Use standard library routines for searching and sorting arrays

5.3: Compare algorithms with respect to their efficiency, elegance, and readability

6: Apply and communicate information that they read from technical sources such as APIs.

6.1: Read, apply,, and summarize computer programming resources including textbook, API documentation, and help forums

6.2: Select and use examples, counterexamples, code alternatives, test cases, and diagrams to explain computer programming concepts