Computers are our everyday reality. But we often use them without knowing how they work. The question is, do we actually need to know how computers work? What do we gain (if anything) from such knowledge?



  • Do you know how a car engine works?
  • Have you ever made a web page?





  • fluctuate – rise and fall irregularly in number or amount
  • weird – suggesting something supernatural; unearthly
  • literacy – competence or knowledge in a specified area
  • evaporate – (of something abstract) cease to exist
  • vague – of uncertain, indefinite, or unclear character or meaning
  • guts – the inner parts or essence of something
  • wrestle – struggle with a difficulty or problem


Think about it

Answer the questions below. Pause at times indicated in brackets.

  • Where and when did Gene teach? What patterns did he notice while there? (1:00)
  • What does Gene think about computers and integrating computer science into other subjects? What did the new approach lead to? (1:50)
  • What does Gene say about coding? What is it? What is it not? What is coding useful for? (2:30)
  • What are the advantages and disadvantages of the idea of separating the interface of a computer from how it actually works? (4:08)


Practice makes perfect

Fill in the blank spaces with the missing words. Use ONE word per blank space.

Computer programming [. . .] is a process that leads ________ an original formulation of a computing problem _______ executable computer programs. Programming involves activities ________ as analysis, developing understanding, generating algorithms, verification of requirements of algorithms including their correctness and resources consumption, and implementation (commonly referred ________ as coding) of algorithms ________ a target programming language. Source code is written ________ one or more programming languages. ________ purpose of programming is ________ find a sequence of instructions that will automate performing a specific task or solving a given problem. The process of programming thus often requires expertise in _________ different subjects, including knowledge of the application domain, specialized algorithms, and formal logic.

Related tasks include testing, debugging, and maintaining the source code, implementation ________ the build system, and management of derived artifacts such ________ machine code of computer programs. These might be considered part of the programming process, but often ________ term software development is used ________ this larger process with the term programming, implementation, or coding reserved for the actual writing of source code. Software engineering combines engineering techniques ________ software development practices.


Fill in the blank spaces with the words in CAPITAL LETTERS used in appropriate forms.

Debugging is a very important task in the software ________ DEVELOP process since having defects in a program can have ________ SIGNIFY consequences for its users. Some languages are more prone to some kinds of faults because their ________ SPECIFY does not require compilers to perform as much checking as other languages. Use of a static code analysis tool can help detect some ________ POSSIBILITY problems. Normally the first step in debugging is to attempt to reproduce the problem. This can be a non-trivial task, for example as with parallel processes or some ________ USUAL software bugs. Also, specific user environment and usage history can make it difficult to reproduce the problem.

After the bug is reproduced, the input of the program may need to be ________ SIMPLE to make it easier to debug. For example, a bug in a compiler can make it crash when parsing some large source file. However, after simplification of the test case, only few lines from the original source file can be ________ SUFFICE to reproduce the same crash. Such simplification can be done ________ MANUAL, using a divide-and-conquer approach. The programmer will try to remove some parts of original test case and check if the problem still exists. When debugging the problem in a GUI, the ________ PROGRAM can try to skip some user interaction from the original problem ________ DESCRIBE and check if remaining actions are sufficient for bugs to appear.

from Wikipedia


Explore it more