New Building Website

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

Typically offered during both the fall and spring semesters.

Catalog description:

An introduction to computer programming in a contemporary language. Algorithm development, refinement, and problem solving approaches. Data types and control structures. Program debugging and testing. Interactive input/output. Single and multi-dimensional arrays. Simple sorting and searching algorithms. Introduction to classes, objects, and object-oriented programming.

Prerequisite: Algebra and trigonometry.

Course Objectives:

  • Describe the programming environments and the process of program translation from source code to intermediate or executable representation.
  • Specify, design, and implement programs written in a contemporary programming language, currently Java, that solves the stated problem in a clean and robust fashion.
  • Use techniques and tools for debugging programs and develop strategies for testing a program's correctness.
  • Understand and appropriately apply primitive data types and control structures (sequence, selection, repetition).
  • Incorporate console input/output into computer programs.
  • Be able to use and implement class definitions in computer programs.
  • Be able to design classes, methods, and data members to solve the problem effectively.
  • Describe and implement fundamental algorithms in sorting and searching.
  • Use one-dimensional and two-dimensional arrays.

Success Skills:

  • Minimum one project assignment requiring independent learning


CSA 174 is a first-tier course in the CSA2 "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 CSA2 thematic sequence consists of both of the following introductory computer programming courses.

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

Followed by one of the following courses...

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

CSA 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

 

CSA 174 is a first-tier course in the CSA4 "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 CSA4 thematic sequence consists of one of the following introductory computer programming courses...

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

Followed by both of the following courses...

CSA 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.


Learning Outcomes:

Below are the learning outcomes for this course.  Miami Plan foundation courses and thematic sequence courses address some or all of the Four Principles of Liberal Education: Thinking Critically, Understanding Contexts, Engaging with Other Learners, and Reflecting and Acting.  These principles are not simply additional "topics" that are covered during the course.  Rather, they are perspectives and ways of reasoning that are essential to all the content of the course.  Learning outcomes that address these principles are indicated in the table.   Liberal Education Principals (LEP)Key: T=Thinking Critically, U=Understanding Contexts

Learning Outcomes:

LEP

CSA174.1: To describe and use a contemporary programming language and programming environment
CSA174.1.1:          Describe the process of program translation from source code to intermediate or executable representation
CSA174.1.2:          Describe the concepts of syntax and semantics of a programming language
CSA174.1.3:          Describe the data representation commonly used for integers, characters, and strings
CSA 174.1.4:    Describe and compare rules associated with declarations, including scope and lifetime, for program constructs such as variables, functions and methods

U

CSA174.2: To be able to identify and eliminate errors in programs
CSA174.2.1:          Describe the difference between a syntax error, run-time error, and logic error
CSA174.2.2:          Read errors reported by the compiler and use those error messages to correct the syntax
CSA174.2.3:          Use techniques and tools for debugging programs
CSA174.2.4:          Develop and apply strategies for testing both class and program correctness

T

CSA174.3: To be able to specify, trace, and implement programs written in a contemporary programming language that solves a stated problem in a clean and robust fashion
CSA174.3.1:          Understand and appropriately apply primitive data types to represent information
CSA174.3.2:          Trace and use the common arithmetic operators within expressions that use parenthesis and operator precedence
CSA174.3.3:          Describe, trace, and implement programming control structures including pretest and posttest loops, counter-controlled loops, and conditionals.
CSA174.3.4:          Understand and appropriately apply control structures, nested and un-nested
CSA174.3.5:          Use console input/output into a program
CSA174.3.6:          Apply one-dimensional and two-dimensional arrays to programming problems
CSA174.3.7:          Be able to use 3rd party class definitions, including those that represent strings, produce random numbers, perform math functions, format strings, and perform console input and output
CSA174.3.8:          Be able to implement a class definition from a given design that incorporates primitive types, 3rd party classes, accessor and mutator methods, constructors, method overloading, static data and methods, and other methods for processing the object.
CSA174.3.9:          Describe cocmmon terminology related to OO programming including objects, classes, methods, encapsulation

T,U

CSA 174.4: To be able to describe, trace, and implement basic algorithms
CSA174.4.1:          Describe, trace, and implement bubble sort, selection sort, and/or insertion sort
CSA174.4.2:          Describe, trace, and implement linear search and non-recursive binary search
CSA174.4.3:          Be able to use library routines for searching and sorting data
CSA174.4.4:          Compare algorithms with respect to their efficiency, elegance, and readability.

T,U

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)