Programming Fundamentals/Introduction

This lesson introduces computer programming, flowcharts, pseudocode, and integrated development environments (IDEs). These will help you to learn a chosen programming language as well as help you learn to write your own programs. Each of the programs are essential to helping you take the steps needed to go further in your field.

Flowchart displaying "Hello, world!"
Flowchart displaying "Hello, world!"

Objectives and Skills

edit

Objectives and skills for this lesson include:

  • Understand fundamental computer programming concepts.
  • Use a flowchart to describe a simple process.
  • Use pseudocode to describe a simple process.
  • Use an online IDE to edit and test simple programs.
  • Understand available compilers/interpreters and IDEs for a selected programming language.

Readings

edit
  1. Pressbooks: Programming Fundamentals
  2. Wikipedia: Computer programming
  3. Wikipedia: Software development process
  4. Wikipedia: Flowchart
  5. Wikipedia: Pseudocode
  6. Wikipedia: Programming language
  7. Wikipedia: Visual programming language
  8. Wikipedia: Integrated development environment
  9. Wikipedia: "Hello, World!" program
  10. Wikipedia: Comment (computer programming)

Multimedia

edit
  1. YouTube: How to Think Like a Programmer
  2. YouTube: Should I Give Up Computer Science If I Find It Hard?
  3. YouTube: Introduction to Programming
  4. YouTube: Elements of High-Quality Programs (Through the development life cycle)
  5. YouTube: Programming Basics "Pseudocode"
  6. YouTube: Sandwich making algorithm
  7. YouTube: What is an IDE?
  8. YouTube: What Programming Language Should I Learn First
  9. YouTube: What is Version Control?

Practice

edit

Examples

edit

Activities

edit

Flowcharts

edit
  1. Review Flowchart. Use one of the free online or downloadable flowchart tools to create a flowchart that describes how to make your favorite sandwich or other non-prepackaged food. If unsure how to proceed, search the Internet for flowchart peanut butter and jelly sandwich to use as an example. Note: Because peanut butter and jelly sandwich examples are already available, you must select something else for your flowchart.

Pseudocode

edit
  1. Review Pseudocode. Create a text document that uses pseudocode to describe how to make your favorite sandwich or other non-prepackaged food. If unsure how to proceed, search the Internet for pseudocode peanut butter and jelly sandwich to use as an example. Note: Because peanut butter and jelly sandwich examples are already available, you must select something else for your pseudocode.

Programming Languages

edit
  1. Research different programming languages and select a programming language to use for this course. If unsure, Python3 is currently a popular choice for a first programming language. Use the Examples link above for your selected programming language and use one of the free online IDE links provided to try running the Hello World program.
  2. Modify the example Hello World program to instead display Hello <name>!, where <name> is your name. Include comments at the top of the program and test the program to verify that it works correctly.
  3. Research free downloadable tools for your selected programming language (interpreter/compiler, IDE, etc.). Consider downloading and installing a development environment on your system. If you set up your own development environment, test the environment using your Hello Name program written above.

Interactive Learning/Programming Games

edit
  1. Code.org
  2. CodeCombat.com
  3. Codingame.com
  4. Checkio.org
  5. Codewars.com
  6. Microsoft MakeCode

Coding Apps

edit

Try one or more of the following mobile coding applications:

  • Grasshopper - Google's Grasshopper app is a fantastic way for beginners to start coding. There's no shortage of coding tutorials or programs that aim to teach coding to beginners.
  • Encode - Provides small lessons that teach coding concepts and provide examples of real code (uses JavaScript)
  • Mimo: Learn to code - Learn basics of coding and do lessons based on your areas of interest (various languages)
  • ProgrammingHub - Add courses based on your interests and skill levels. Can be used by beginners or pros looking to refine skills (various languages)
  • Py - Offers beginner, intermediate, and advanced courses in the areas of iOS development, website development, and data science (various languages)
  • SoloLearn - Teaches beginner lessons in a large number of languages that have many different applications (various languages)

All apps offer free versions, some offer premium versions.

Developer Networks

edit

Many hardware and software vendors maintain a developer network as a part of their public website. Developer networks are maintained to allow communities of people learn, use, and even exchange and review programs with other members of the online community. Spend some time at a the development network websites below and see what kinds of resources common vendors offer to enable and encourage developers to grow within their communities. Or, if you have a favorite game, program or vendor, spend some time searching to see if they too host an online development community.

Lesson Summary

edit

Overall, this first lesson goes over the different fundamentals crucial to starting the development process.

  • Computer Programming is the process of writing the source code for computer applications. The source code is written in one of many programming languages which will tell the application to carry out a task depending on what code has been written.[1], [2]
    • A programming language is a formal language that specifies a set of instructions that can be used to produce various kinds of output. Programming languages can be used to create programs that implement specific algorithms, and is usually split into the two components of syntax (form) and semantics (meaning).[3][4]
  • A "Hello, world!" program is a computer program that outputs or displays "Hello, world!" to a user. It is often used as an intro to the basic syntax of a programming language for a working program, and is often the very first program people write when they are new to a language.[5]
  • The input–process–output (IPO) model, or input-process-output pattern, is a widely used approach in systems analysis and software engineering for describing the structure of an information processing program or other process. Many introductory programming and systems analysis texts introduce this as the most basic structure for describing a process.[6]
    • A program or process using the input-process-output model receives inputs from a user or other source and returns the results of the computations. The system separates itself from the environment, thus defining both inputs and outputs, as one united mechanism.[7]
  • A flowchart is a type of diagram that represents an algorithm, workflow or process, showing the steps as different boxes joined by arrows. Flowcharts are used in analyzing, designing, documenting or managing a process or program in various fields.[8]
  • Visual programming languages (VPL) are any programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually.
    • A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation.[9]
  • Programming involves problem analysis, solution design, source code development, testing, and maintenance.[10][11]
    • Common methodologies include Agile, waterfall, prototyping, iterative and incremental development, spiral development, rapid application development, extreme programming and various types of agile methodology.[12]
  • Program quality requirements include reliability, robustness, usability, portability, maintainability, and efficiency/performance.[13]
  • An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools and a debugger. Most modern IDEs have intelligent code completion.
    • Integrated development environments are designed to maximize programmer productivity by providing tightly-knit components with similar user interfaces.[14]
    • Some IDEs, such as NetBeans and Eclipse, contain a compiler, interpreter, or both. Others, such as SharpDevelop and Lazarus, do not.[15]
  • Comments are programmer-readable explanations or annotations in the source code of a computer program. They are added with the purpose of making the source code easier for humans to understand, and are generally ignored by compilers and interpreters.[16]

Key Terms

edit
agile software development
Agile software development comprises various approaches to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s). It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.[17]
algorithm
A self-contained step-by-step set of operations to be performed.[18]
compiler
A computer program that transforms source code written in a programming language (the source language) into another computer language (the target language), with the latter often having a binary form known as object code.[19]
continuous integration
Practice of merging all developer working copies to a shared mainline several times a day.[20]
flowchart
A type of diagram that represents an algorithm, workflow or process, showing the steps as boxes of various kinds, and their order by connecting them with arrows.[21]
incremental development
Breaks down a development project into smaller segments that are completed before moving on to the next segment. This method reduces risk and facilitates more ease-of-change in the development process.[22]
input
Signals or data received by a computer system.[23]
integrated development environment (IDE)
A software application that provides comprehensive facilities to computer programmers for software development.[24]
interpreter
A computer program that directly executes, i.e. performs, instructions written in a programming or scripting language, without previously compiling them into a machine language program.[25]
IPO
An acronym for the Inputs - Processing - Outputs model which describes the structure of a program as what data would be inputted into an information system, how that information is processed, what the processed information would output from the information system.[26]
machine code
A set of instructions executed directly by a computer's central processing unit (CPU).[27]
object code
A sequence of statements or instructions produced by a compiler, usually in a machine code language or an intermediate language.[28]
object-oriented programming
A programming paradigm based on the concept of "objects", which may contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods.[29]
output
Signals or data sent from a computer system.[30]
procedural programming
A programming paradigm, derived from structured programming, based upon the concept of the procedure call, where any given procedure might be called at any point during a program's execution, including by other procedures or itself.[31]
process
An instance of a computer program that is being executed, which contains the program code and its current activity.[32]
programming language
A formal computer language designed to communicate instructions to a machine, particularly a computer.[33]
prototyping
Developing incomplete versions of the software program being developed. Allows developers to test individual features of a larger program.[34]
pseudocode
An informal high-level description of the operating principle of a computer program or other algorithm.[35]
rapid application development
Favors rapid construction of prototypes over a large up-front planning phase. The lack of planning allows for software to be completed much faster.[36]
scripting language
A programming language that supports programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator.[37]
source code
Any collection of computer instructions, possibly with comments, written using a human-readable programming language, usually as ordinary text.[38]
syntax
The set of rules that defines the combinations of symbols that are considered to be a correctly structured document or fragment in that language.[39]
waterfall development
Sequential development approach in which development goes through several phases: requirement analysis, design, implementation, verification, and maintenance.[40]

Assessments

edit

See Also

edit

References

edit
  1. Wikipedia: Computer programming
  2. Wikipedia: List of programming languages
  3. Wikipedia: Programming Language
  4. Wikipedia: Programming language
  5. Wikipedia: "Hello, World!"
  6. Wikipedia: IPO model
  7. Wikipedia: IPO model
  8. Wikipedia: Flowchart
  9. Wikipedia: Visual programming language
  10. Wikipedia: Computer programming
  11. Wikipedia: Software development process
  12. Wikipedia: Software development process,
  13. Wikipedia: Computer programming
  14. Wikipedia: Integrated development environment
  15. Wikipedia: Integrated development environment
  16. Wikipedia: Comment (computer programming)
  17. Wikipedia: Agile software development
  18. Wikipedia: Algorithm
  19. Wikipedia: Compiler
  20. "Software development process". Wikipedia. 2019-01-09. https://en.wikipedia.org/w/index.php?title=Software_development_process&oldid=877599120. 
  21. Wikipedia: Flowchart
  22. "Software development process". Wikipedia. 2019-01-09. https://en.wikipedia.org/w/index.php?title=Software_development_process&oldid=877599120. 
  23. Wikipedia: Input/output
  24. Wikipedia: Integrated development environment
  25. Wikipedia: Interpreter (computing)
  26. "IPO model". Wikipedia. 2019-08-06. https://en.wikipedia.org/w/index.php?title=IPO_model&oldid=909589659. 
  27. Wikipedia: Machine code
  28. Wikipedia: Object code
  29. Wikipedia: Object-oriented programming
  30. Wikipedia: Input/output
  31. Wikipedia: Procedural programming
  32. Wikipedia: Process (computing)
  33. Wikipedia: Programming language
  34. "Software development process". Wikipedia. 2019-01-09. https://en.wikipedia.org/w/index.php?title=Software_development_process&oldid=877599120. 
  35. Wikipedia: Pseudocode
  36. "Software development process". Wikipedia. 2019-01-09. https://en.wikipedia.org/w/index.php?title=Software_development_process&oldid=877599120. 
  37. Wikipedia: Scripting language
  38. Wikipedia: Source code
  39. Wikipedia: Syntax (programming languages)
  40. "Software development process". Wikipedia. 2019-01-09. https://en.wikipedia.org/w/index.php?title=Software_development_process&oldid=877599120.