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.

Prerequisite: 

Prerequisite: ACT Math score of 22 or higher, or SAT Math score of 520 or higher, or score of at least 8 on the Miami International Math Placement Test.
Or, prerequisite or Co-requisite: 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 (1.0)
    • The syntax and semantics of programming languages
    • The Java compiler and the Java Virtual Machine
    • IDEs
    • Source code and byte code
    • Code readability (comments, formatting, style guidelines)
  • Basic Language Elements (2.0)
    • Types, operators, literals, variables, constants, expressions, statements
    • Primitive data types
    • Strings
    • Type conversion
    • Interactive input/output
    • Text file input and output
  • Control Structures (3.0)
    • Conditionals (if/else, switch, ternary operator)
    • Loops (for, while, do/while)
    • Exception handling (try/catch)
  • Testing and Debugging (1.0)
    • Compile-time errors vs. runtime errors
    • Testing and debugging strategies
    • Writing test code
    • Using a debugger
  • Writing Methods (2.0)
    • Implementing static methods
    • Parameter passing
    • Method overloading
    • Variable lifetime and scope
  • Arrays (3.0)
    • Single and two-dimensional arrays
    • Common array algorithms (e.g. counting, min/max, sum)
    • Iterative search algorithms: linear and binary
    • "for each" loops
    • Iterative sort algorithm (e.g. bubble, selection or insertion)
  • Using objects (1.0)
    • Using constructors and methods
    • Passing and returning object references
    • Typical object methods (toString, equals, compareTo)
    • == vs .equals()
    • Arrays of objects
    • Java API documentation
  • Examinations (1.0)

Course Outcomes

  1. Use and describe a contemporary programming language and programming environment.
    • Describe the process of programming from source code to executable code, including the roles of the Java compiler and Java Virtual Machine
    • Describe the concepts of syntax and semantics of a programming language
    • Describe and compare the scope and lifetime of local, block-level, parameter, and class-level variables
    • Describe the data representation commonly used for integers, floating point values, booleans, characters, and strings
    • Format and comment source code that adheres to a given set of formatting guidelines
    • Use a Java Integrated Development Environment (IDE) to write computer programs
  2. Identify and eliminate errors in programs
    • Describe the difference between compiler errors and runtime errors
    • Interpret compiler error messages and use those messages to fix errors
    • Use a debugger to find and fix runtime errors
    • Write code that can be used to test other code
    • Read and analyze code, and identify errors in that code
  3. Implement clean and robust programs that solve a stated problem
    • Select appropriate Java primitive data types to represent information
    • Write code that uses common arithmetic operators and methods
    • Write code that uses conditionals: if/else, switch, ternary operator
    • Write code that uses loops: for, while, do/while, for each
    • Use console and file input and output in a program
    • Use collections: one- and two-dimensional arrays and ArrayLists
    • Use 3rd party classes: String, Math, Scanner, PrintWriter and File
  4. Solve programming problems using a procedural approach
    • Create and implement an algorithmic approach to a problem using functional decomposition
    • Determine necessary/desirable functions along with their needed structure (parameters, return types, etc.)
  5. Describe, trace, and implement basic algorithms
    • Describe, trace, and implement linear search, non-recursive binary search, and at least one non-recursive sorting algorithm (e.g. bubble sort, selection sort, insertion sort)
    • Implement common array algorithms: counting, adding, computing the min/max
    • Compare algorithms with respect to their efficiency, elegance, and readability
  6. Use API documentation
    • Use Java's API documentation to select and use appropriate classes, objects, constructors, and methods
    • Use standard Object methods: equals(), toString(), compareTo()