Module 5

Low Level Programming

Chapter 6 is about programming!

Chapters 2 and 3 were about the basic information necessary for understanding a computing system, including number systems and ways to represent different types of information in a computer.

Chapters 4 and 5 were about the hardware components of a computer.

Now the emphasis changes from what a computer system is to how to use one.

Outline Chapter 6

Chapter 6 Low-Level Programming Languages and Pseudocode

6.1 Computer Operations

6.2 Machine Language

Pep/8: A Virtual Computer

6.3 A Program Example

Hand Simulation

Pep/8 Simulator

6.4 Assembly Language

Pep/8 Assembly Language

Assembler Directives

Assembly-Language Version of Program Hello

A New Program

A Program with Branching

A Program with a Loop

6.5 Expressing Algorithms

Pseudocode Functionality

Following a Pseudocode Algorithm

Writing a Pseudocode Algorithm

Translating a Pseudocode Algorithm

6.6 Testing

Ethical Issues: Software Piracy


Related FGCU Courses

http://icarus.fgcu.edu:8080/CourseDescriptions/

COP 3530 Data Structures & Algorithms

Data structure design, implementation, application, and analysis are explored. Abstract data types (ADTs) are introduced and uses of interfaces is emphasized. Topics include stacks, queues, linked lists, and trees. Recursion is revisited, the O notation is introduced, and computational complexity of searching and sorting algorithms are explored.

Lesson

Day One

  • Chapter questions review

  • Machine language -> Assembly language -> Pseudocode -> High level code

  • Machine language - the language made up of binary-coded instructions that is used directly by the computer

    • Pep/8

      • A register is a small area of storage in the ALU of the CPU that holds special data and intermediate values. Pep/8 has seven registers, three of which we focus on at this point:

        • The program counter (PC) contains the address of the next instruction to be executed

        • The instruction register (IR) contains a copy of the instruction being executed

        • The accumulator (A register) stores arithmetic and logic results

      • Two parts to an instruction:

        • the instruction specifier - 8 bits, indicates which operation is to be carried out

          • opcode

          • addressing mode specifier

            • immediate (operand is data)

            • direct (operand is address of data)

        • the operand specifier (optional) - 16 bits, holds either the operand itself or the address of where the operand is to be found

      • Basic operation

      • Program decoded

    • Loader A piece of software that takes a machine-language program and places it into memory


Day Two

  • Assembly language - a language in which we can use a combination of letters to represent a machine-language instruction.

    • Look at and modify fig0526

  • Algorithm - A plan or outline of a solution; a logical sequence of steps that solve a problem

  • Pseudocode - A language designed to express algorithms

    • Write a pseudocode algorithm to get three integers from the user and print them in numeric order.

  • Related games that will help prepare you for Assembly Language class

  • Continue Machine, Assembly, Algorithm, Pseudocode


Project Review

HTML


Project Preview

CSS


Software Development Fundamentals (SDF)

Fluency in the process of software development is a prerequisite to the study of most of computer science. In order to use computers to solve problems effectively, students must be competent at reading and writing programs in multiple programming languages. Beyond programming skills, however, they must be able to design and analyze algorithms, select appropriate paradigms, and utilize modern development and testing tools. This knowledge area brings together those fundamental concepts and skills related to the software development process. As such, it provides a foundation for other software-oriented knowledge areas, most notably Programming Languages, Algorithms and Complexity, and Software Engineering.

Algorithms and Design

This unit builds the foundation for core concepts in the Algorithms and Complexity Knowledge Area, most notably in the Basic Analysis and Algorithmic Strategies knowledge units.


KA Topics:

  • The concept and properties of algorithms

    • Informal comparison of algorithm efficiency (e.g., operation counts)

  • The role of algorithms in the problem-solving process

  • Problem-solving strategies

    • Iterative and recursive mathematical functions

    • Iterative and recursive traversal of data structures

    • Divide-and-conquer strategies

  • Fundamental design concepts and principles

    • Abstraction

    • Program decomposition

    • Encapsulation and information hiding

    • Separation of behavior and implementation


KA Learning Outcomes:

  1. Discuss the importance of algorithms in the problem-solving process. [Familiarity]

  2. Discuss how a problem may be solved by multiple algorithms, each with different properties. [Familiarity]

  3. Create algorithms for solving simple problems. [Usage]

  4. Use a programming language to implement, test, and debug algorithms for solving simple problems. [Usage]

  5. Implement, test, and debug simple recursive functions and procedures. [Usage]

  6. Determine whether a recursive or iterative solution is most appropriate for a problem. [Assessment]

  7. Implement a divide-and-conquer algorithm for solving a problem. [Usage]

  8. Apply the techniques of decomposition to break a program into smaller pieces. [Usage]

  9. Identify the data components and behaviors of multiple abstract data types. [Usage]

  10. Implement a coherent abstract data type, with loose coupling between components and behaviors. [Usage]

  11. Identify the relative strengths and weaknesses among multiple designs or implementations for a problem. [Assessment]


Fundamental Programming Concepts

This knowledge unit builds the foundation for core concepts in the Programming Languages Knowledge Area, most notably in the paradigm-specific units: Object-Oriented Programming, Functional Programming, and Event-Driven & Reactive Programming.


KA Topics:

  • Basic syntax and semantics of a higher-level language

  • Variables and primitive data types (e.g., numbers, characters, Booleans)

  • Expressions and assignments

  • Simple I/O including file I/O

  • Conditional and iterative control structures

  • Functions and parameter passing

  • The concept of recursion


KA Learning Outcomes:

  1. Analyze and explain the behavior of simple programs involving the fundamental programming constructs variables, expressions, assignments, I/O, control constructs, functions, parameter passing, and recursion. [Assessment]

  2. Identify and describe uses of primitive data types. [Familiarity]

  3. Write programs that use primitive data types. [Usage]

  4. Modify and expand short programs that use standard conditional and iterative control structures and functions. [Usage]

  5. Design, implement, test, and debug a program that uses each of the following fundamental programming constructs: basic computation, simple I/O, standard conditional and iterative structures, the definition of functions, and parameter passing. [Usage]

  6. Write a program that uses file I/O to provide persistence across multiple executions. [Usage]

  7. Choose appropriate conditional and iteration constructs for a given programming task. [Assessment]

  8. Describe the concept of recursion and give examples of its use. [Familiarity]

  9. Identify the base case and the general case of a recursively-defined problem. [Assessment]