Computer Programming


Computer Programming | Coding is a Superpower! | Is Computer Programming hard to learn? | Introduction to Programming with Python | Review

Computers are everywhere. They are in our pockets. They are on our walls. They are in our cars. They are a critical piece of our infrastructure, from power grids to traffic lights to the inner workings of our financial markets. And all of these computers have one thing in common. They depend on software to tell them what to do.

Manchester Baby

Manchester Baby is world's first stored program computer. Approximately 70 years ago, the Manchester Small Scale Experimental Machine, nicknamed "Baby", became the earliest computer in the world to run a program electronically stored in its memory. This was a flagship moment: the first implementation of the stored program concept that underpins modern computing.

Earlier computers had their instructions hardwired into their physical design or held externally on punched paper tape or cards. Reprogramming them to do a different task entailed internal rewiring or altering the physical storage media. The Baby marked a new computing era, described by some as the "birth of software," in which swapping programs was far simpler-requiring only an update to the electronic memory. Both instructions and data were held in the Baby's memory and the contents could be altered automatically at electronic speeds during the course of computation.

The Software Development Cycle

The software development cycle, also referred to as the application development life-cycle, is a series of steps programmers use to build computer programs. It is used in systems engineering, information systems and software engineering to describe a process for planning, creating, testing, and deploying an information system. The creation of software involves six basic activities:

software development modelThe software development models are the various processes or methodologies that are being selected for the development of the project depending on the project's aims and goals. There are many development life cycle models that have been developed in order to achieve different required objectives. The models specify the various stages of the process and the order in which they are carried out.

The selection of a model has a very high impact on the testing that is carried out. It will define the what, where and when of our planned testing, influence regression testing and largely determines which test techniques to use.

There are various Software development models or methodologies. They are as follows:

  1. Waterfall model
  2. V model
  3. Incremental model
  4. RAD model
  5. Agile model
  6. Iterative model
  7. Spiral model
  8. Prototype model

Choosing the right model for developing of the software product or application is very important. Based on the model, the development and testing processes are carried out.

Assignment: Software Development Models or Methodologies discussion board

Directions: elect one of the eight software development models or methodologies and describe how the model works. The read posts by other classmates until you are familiar with all eight models. Your description should be approximately 100 words. Please spellcheck before posting.


Examples of the Importance of Good Upfront Design

"Just as a builder doesn't build a house before designing it, a programmer should not write a program without designing it first. Too often, programmers rush to the keyboard without thinking through the logic. A badly designed program results in lots of bugs and maintenance" (G. Perry). The development process is much more involved that this, but these are a few basic development activities

1940 Tacoma Narrows Bridge

Slender, elegant and graceful, the Tacoma Narrows Bridge stretched like a steel ribbon across Puget Sound in 1940. The third longest suspension span in the world opened on July 1st. Only four months later, the great span's short life ended in disaster. "Galloping Gertie," collapsed in a windstorm on November 7, 1940.

The bridge became famous as "the most dramatic failure in bridge engineering history." Now, it's also "one of the world's largest man-made reefs." The sunken remains of Galloping Gertie were placed on the National Register of Historic Places in 1992 to protect her from salvagers.

When Galloping Gertie splashed into Puget Sound, it created ripple effects across the nation and around the world. The event changed forever how engineers design suspension bridges. Gertie's failure led to the safer suspension spans we use today.

Like suspension bridges, computer software must also have good upfront design. Without good design, the resulting software will be full of bugs and doom for failure.

Ariane 5 Rocket Launch

What does the Ariane 5 rocket launch explosion have to do with computer programming? The answer might just surprise you. Watch the video on the Ariane 5 rocket launch.


"One bug, one crash. Of all the careless lines of code recorded in the annals of computer science, this one may stand as the most devastatingly efficient. From interviews with rocketry experts and an analysis prepared for the space agency, a clear path from an arithmetic error to total destruction emerges." Read James Gleick's article A Bug and a Crash: Sometimes a Bug is More Than a Nuisance to learn how a single run-time error brought the giant rocket to the ground.

"There is no life today without software," says Frank Lanza, an executive vice president of the American rocket maker Lockheed Martin. "The world would probably just collapse." Fortunately, he points out, really important software has a reliability of 99.9999999 percent. At least, until it doesn't. The ultimate problems with the launch of the Ariane 5 rocket was a run-time error in the computer software.

Assignment: The Risk Digest Current Event

Directions: Visit the Risk Digest: Forum On Risks To The Public In Computers and Related Systems and read a couple of articles compiled by Peter Neurmann associated with public risk related to computers. Begin reading with the latest edition. Select one article, summarize the article (~150 words) and paste your summary directly to the itsLearning textbox. Do not attach a separate document. Be sure to run spellcheck before submitting your summary. You must cite your source using appropriate MLA or APA style citation.


Coding is a Superpower!

Model and entrepreneur Karlie Kloss shares more about her own interest in learning to code, and why you should give it at least one hour.

Computer programming (often shortened to just programming) is a process that leads from an original formulation of a computing problem to executable programs. Computer programming involves activities such as:

Computer program solves problems that include verification of requirements of the algorithm including its correctness and its resource consumption, implementation of the algorithm in a target programming language, testing, debugging, and maintaining the source code, implementation of the build system and management of derived artifacts such as machine code of computer programs.

The purpose of programming is to find a sequence of instructions that will automate performing a specific task or solve a given problem.

According to a growing number of experts, learning computer science will not only pave the way for future employment prospects - job growth in this sector is booming - but help to accelerate the United States economic recovery.

softwareCode is the foundation of computing. Whether you are using a social media app on your smartphone or working with a cloud server's API, the task relies heavily on a programming language. Ada Lovelace is recognized as the world's first programmer. She wrote an algorithm for Charles Babbage's Analytical Engine. Lovelace's contributions to computing marked the beginning of a rich history in programming despite the first programming languages predate the modern computer.

The first programming languages designed to communicate instructions to a computer were written in the 1950s but the first actual modern programming language is hard to identify.

There are four groups of programming languages and reflect the historical development of computer languages:

Machine code is the only language a microprocessor can process directly without a previous transformation. Currently, programmers almost never write programs directly in machine code, because it requires attention to numerous details which a high-level language would handle automatically, and also requires memorizing or looking up numerical codes for every instruction that is used.

Assembly language has no semantics and no specification, being only a mapping of human-readable symbols, including symbolic addresses, to opcodes, addresses, numeric constants, strings and so on. Typically, one machine instruction is represented as one line of assembly code. Assemblers produce object files which may be linked with other object files or loaded on their own.

High-level programming language is a programming language with strong abstraction from the details of the computer. In comparison to low-level programming languages, it may use natural language elements, be easier to use, or may automate (or even hide entirely) significant areas of computing systems (e.g. memory management), making the process of developing a program simpler and more understandable relative to a lower-level language. The amount of abstraction provided defines how "high-level" a programming language is.

A fourth-generation programming language (4GL) is a computer programming language envisioned as a refinement of the style of languages classified as third-generation programming language (3GL). Each of the programming language generations aims to provide a higher level of abstraction of the internal computer hardware details, making the language more programmer-friendly, powerful and versatile. While the definition of 4GL has changed over time, it can be typified by operating more with large collections of information at once rather than focus on just bits and bytes. Languages claimed to be 4GL may include support for database management, report generation, mathematical optimization, GUI development, or web development. Fourth-generation languages have often been compared to domain-specific languages (DSLs). Some researchers state that 4GLs are a subset of DSLs.

Assignment: Question for Thought 5.1

Directions: Compare and contrast past, current, and trending programming languages from low to high level, used in developing program applications. Your essay should be approximately 250 words and needs to use paragraph headings. You must cite at least two sources using MLA or APA style citations. Be sure to spellcheck your essay before submitting.

Assignment: Ethics in Computer Programming

Directions: Read the short article on The Programming Code of Ethics. Select the one ethic that you think is most important and explain why. Respond to two classmates who chose a different standard and elaborate on their point.


Is Computer Programming Hard to Learn?

The answer to that question depends upon who you ask!

Key Vocabulary Words

Artifact - something created by humans usually for a practical purpose

Bit - a single 1 or 0 in a binary sequence. The smallest unit of measurement in binary

Byte- a unit of data that is eight bit. A byte is the unit computers use to represent a character such as a letter, number, or typographic symbol.

Low level programming language - a programming language that provides little or no abstraction from a computer's instruction set architecture. Generally this refers to either machine code or assembly language

High level programming language - a programming language with strong abstraction from the details of the computer

Coordinate system - a coordinate system that specifies each point uniquely in a plane by a pair of numerical coordinates x and y

RGB color model - color model used for representing and displaying images in electronic systems, such as televisions and computers

Logic gate - A logic gate is a device, usually an electrical circuit that performs one or more logical operations on one or more input signals. Logic gates are the building blocks of digital technology


Introduction to Programming with Python

Assignment: CodeHS Programming in Python

Directions: Follow the instructions in itsLearning for your Python assignments.


Review

Quiz created by sarush with GoConqr

Resources

Greenfoot Tutorial Videos on YouTube: https://www.youtube.com/playlist?list=PL84B14314CEBAC375


Credits

Software picture: http://www.processing.lyndondaniels.com/1about.php

We've Come a Long Way Baby: https://googleblog.blogspot.co.uk/2013/06/youve-come-long-way-baby-remembering.html

Beginning Programming: Designing a Program. G. Perry (2002).