SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
Software Development Concepts

CompTIA Tech+ (FC0-U71): Software Development Concepts — Languages, Data Types and Program Logic

16 min readFC0-U71 · Software Development ConceptsUpdated

Software development concepts are the basic building blocks of programming: the categories of language people write code in, the types of data a program stores, the pieces a program is made from (variables, arrays, functions and objects) and the logic that decides what runs and in what order. This CompTIA Tech+ lesson covers all of domain 4, objectives 4.1 to 4.4: compiled, interpreted, scripting, markup, query and assembly languages; the char, string, integer, float and Boolean data types; identifiers, variables, constants, arrays, functions, objects, properties, attributes and methods; and the organisational techniques and logic — pseudocode, flowcharts, comments, documentation, sequence, branching and looping — used to plan and read a program. You will not need to write real code, but you will need to recognise each concept from a short description and trace simple pseudocode.

What you’ll learn
  • Compare compiled, interpreted, scripting, markup, query and assembly languages by how their code is translated and what they are used for.
  • Choose the right data type — char, string, integer, float or Boolean — for a value, and explain why a string plus a number can join as text.
  • Explain identifiers, variables, constants and zero-based arrays, and when each is the right way to store data.
  • Describe functions, parameters and return values, and tell classes, objects, properties/attributes and methods apart.
  • Use pseudocode, flowchart symbols, comments and documentation to plan and explain a program.
  • Recognise sequence, branching and looping, combine conditions with AND, OR and NOT, and trace simple pseudocode to its output.

Programming language categories: how code becomes something a computer runs

A programming language category describes what a language is for and how its code reaches the processor. A processor only executes machine code — binary instructions for its own instruction set — so everything a person writes must be translated, either all at once before the program runs (compiled), step by step while it runs (interpreted), or not at all because it is not a program (markup, which describes documents). Tech+ objective 4.1 names six categories, and the exam asks you to tell them apart from a short description or a single example.

CategoryWhat it doesExamples
CompiledWhole program translated to machine code before it is distributed and runC, C++, Go, Rust
InterpretedSource translated and run statement by statement at run time by an interpreterPython, JavaScript, Ruby
ScriptingShort programs that automate tasks; usually interpretedPowerShell, Bash, Python, JavaScript
MarkupTags that label the structure of a document or data; no program logicHTML, XML
QueryRequests that retrieve and change data in a databaseSQL (and dialects such as Transact-SQL)
AssemblyMnemonics that map almost one to one onto a processor's machine instructionsx86 assembly, ARM assembly

Categories overlap: Python is both interpreted and a popular scripting language, and JavaScript is interpreted (in practice, modern engines also compile it on the fly) and scripts web pages. Answer from the property the scenario describes — when translation happens, what the language is used for, or how close it is to the hardware.

Compiled vs interpreted languages

The difference is when translation happens. A compiler translates the whole program into machine code once, ahead of time, producing an executable file. An interpreter, in the classic model, reads the source code each time the program runs and translates and executes it one statement at a time. (Real implementations blur the line: the main Python implementation first compiles source to bytecode and then interprets that, and JavaScript engines compile hot code on the fly, but for Tech+ the classic model is what is tested.)

CompiledInterpreted
TranslationOnce, before running, for the whole programEvery run, statement by statement
Speed when runningUsually faster — already machine codeUsually slower — translating while running
Software the user needsNone extra; the executable runs on its ownThe interpreter must be installed
PortabilityExecutable is built for one processor/OS; rebuild for othersSame source runs anywhere the interpreter exists
Making a changeEdit, recompile (build), then runEdit the source and run it again directly
When errors appearMany are reported at compile time, before the program can runOnly when the faulty line is reached during a run

Match the property a scenario stresses to a row of the table. Execution speed and a standalone executable are strengths of compiled code; portability, quick edit-and-test cycles and errors that surface only at run time are characteristics of interpreted code. Neither is better in general — the requirement decides.

Scripting, markup, query and assembly languages

Scripting languages automate tasks, markup languages describe the structure of documents and data, query languages read and change data in a database, and assembly language is a human-readable form of a processor's machine instructions.

  • Scripting languages automate tasks: creating user accounts in bulk, backing up folders on a schedule, clearing out old log files, making a web page interactive. Scripts are short, quick to write and usually run by an interpreter. PowerShell automates Windows administration, Bash automates Linux and other Unix-like shells, and Python and JavaScript are also widely used for scripting.
  • Markup languages place tags around content to describe its structure or meaning; they contain no program logic. HTML uses a fixed set of predefined tags that browsers understand (<h1> for a heading, <p> for a paragraph, <a> for a link). XML lets the author name their own tags (<isbn>, <author>) to describe data for storage and exchange.
  • Query languages ask a database for data and change it. SQL (Structured Query Language) is the standard for relational databases; a statement such as SELECT title FROM books WHERE year > 2020 returns the matching rows. Vendors add dialects, such as Microsoft's Transact-SQL for SQL Server. A script can send a query, but the query itself is written in a query language.
  • Assembly language is the lowest-level human-readable language. Each mnemonic, such as MOV (move data) or ADD, corresponds almost one to one to a machine instruction, so assembly is tied to one processor family and an assembler converts it to machine code. It gives precise control and speed but is slow to write, which is why today it is used mostly for small, hardware-specific parts of a system — boot code, interrupt handlers and performance-critical routines — while most firmware is written in a higher-level language such as C.
Near-twinsHow to tell them apart
HTML vs XMLHTML: predefined tags that present web pages. XML: tags the author defines to describe data.
Assembly vs machine codeAssembly is readable mnemonics that must be assembled; machine code is the binary the processor runs directly.
Scripting vs queryScripting automates tasks on a system; querying retrieves or changes data inside a database.

Fundamental data types: char, string, integer, float and Boolean

A data type tells the program what kind of value a piece of data is, which decides how much memory it needs and which operations make sense on it. Objective 4.2 names five types; choose the one that fits the value exactly.

TypeHoldsExamples
CharExactly one character'K', '3', '#'
StringA sequence of characters of any length (text)"Flat 4B, Elm Road", "Hello, world"
IntegerWhole numbers, positive or negative, no fraction42, -3, 0
FloatNumbers with a fractional (decimal) part36.6, 2.75, -0.5
BooleanOnly true or falsetrue, false

"Numbers" is the umbrella for the numeric types. Use an integer for things that are counted (seats on a bus, pages in a book, goals in a match); there is never half a seat. Use a float when the fraction matters (a body temperature, a distance in kilometres, an exchange rate) — storing 2.75 in an integer would lose the .75. A Boolean fits anything with exactly two states — whether a door sensor reports open, whether a user has verified their email address — and also the result of a comparison: temperature > 30 evaluates to true or false, so the stored result is a Boolean even though the temperature itself is a number.

A char is the best fit for a value that is always exactly one character, such as a T-shirt size code (S, M or L) or a middle initial; a string is for text of any length, such as a street address with spaces and digits in it. A string could hold a single letter, and a string or integer could imitate a two-state value, but the best type is the one that allows only valid values.

Why type matters: strings, numbers and concatenation

The same operator can do different things depending on type. With numbers, + adds; with strings, + in many languages concatenates — joins the text end to end. So 12 + 5 gives 17, but "12" + "5" gives "125", and in languages such as JavaScript a string plus a number also joins them as text.

This is a common bug. Anything a user types into a form field, or a program reads from a file or the command line, arrives as a string, even when it looks like a number. Unless the program converts it to an integer or float first, "adding" to it produces joined text rather than a sum — so when a calculation shows the digits side by side instead of a total, the value was still text.

Identifiers, variables, constants and arrays

These are the ways a program names and stores data.

  • An identifier is the name given to something in code — a variable, constant, function or object — such as totalPrice or calculateTax. It is how code refers to the thing, not the thing itself. Good identifiers describe what they name.
  • A variable is a named storage location whose value can change while the program runs: a countdown timer, a running total, the number of login attempts so far.
  • A constant is a named value that cannot change while the program runs, such as the number of minutes in an hour or the value of pi. Declaring it constant means an accidental change is caught as an error, which a variable would allow.
  • An array stores many values of the same kind under one identifier, each reached by its position number, the index. Most programming languages count from zero (zero-based indexing): in an array days holding Mon, Tue, Wed, Thu and Fri, days[0] is Mon and days[4] is Fri — the last index is always one less than the number of elements. Asking for an index outside that range, such as days[5], is an out-of-range error.
NeedConcept
A value that changes as the program runsVariable
A value that must stay the same for the whole runConstant
Many related values under one name, accessed by positionArray
The name used to refer to any of theseIdentifier

Functions: reusable blocks of code with parameters and return values

A function is a named, reusable block of code that performs one task. You write it once and call it from anywhere in the program, so the same logic (converting a temperature, validating an email address) is not copied in several places, and a fix in the function fixes every caller.

Values passed into a function when it is called are its parameters (the values supplied at the call are also called arguments). The value the function sends back to the code that called it is its return value.

FUNCTION average(first, second)
    RETURN (first + second) / 2
END FUNCTION

mean = average(8, 12)    // mean is 10

Here first and second are parameters, 8 and 12 are the arguments supplied at the call, (first + second) / 2 produces the return value, and average is the function's identifier. Functions hold code; variables, constants and arrays hold data.

Objects, classes, properties, attributes and methods

Object-oriented programming models a program as objects — things that bundle data with the actions that work on it. A class is the template that defines what every object of that kind has and can do; an object is one instance created from the class, with its own values.

TermMeaningBank account example
ClassTemplate / blueprintBankAccount
ObjectOne instance made from the classsavings, checking
Property / attributeData that describes the objectowner, balance
MethodAn action the object can perform (a function that belongs to the object)deposit(), withdraw()

Properties and attributes both describe an object's data (some languages draw a fine line between the two words, but at this level they mean the same thing). The quick test: if it describes the object, it is a property or attribute; if the object does it, it is a method. A balance describes an account, so it is a property; depositing is something the account does, so deposit() is a method. And each account you open — savings, checking — is a separate object with its own balance, all built from the one BankAccount class.

Object-oriented methods also organise code: related data and behaviour live together in one class (encapsulation), and a new class can reuse and extend an existing one (inheritance), so a large program is built from well-defined, reusable pieces.

Planning and organising code: pseudocode, flowcharts, comments and documentation

Organisational techniques help people plan, read and maintain a program; none of them change what the program does.

  • Pseudocode writes a program's logic as plain, English-like statements (IF temperature > 30 THEN show heat warning) before any real code exists. It follows no language's exact rules and no computer can run it; it is a planning step that any programmer can then turn into real code.
  • A flowchart plans the same logic graphically, with standard shapes joined by arrows that show the direction of flow.
  • Comments are notes written inside the source code that explain what a section does or why. The computer ignores them when the program runs (they start with markers such as // or #).
  • Documentation is written material kept separate from the code — user manuals, setup guides, API references, release notes, design notes — explaining how the program is set up, operated or maintained.
Flowchart shapeMeaning
Oval (rounded rectangle, terminator)Start or end of the process
RectangleA process step — a calculation or action
ParallelogramInput or output — the user enters data, or the program displays/prints it
DiamondA decision — a yes/no question that splits the flow
ArrowDirection of flow between steps

Near-twins: pseudocode and flowcharts both plan logic (text vs shapes); comments and documentation both explain code to people (inside the code vs a separate guide).

Logic concepts: sequence, branching and Boolean operators

Every program is built from three control structures: sequence, branching and looping. Sequence is the default: statements run one after another, in order, each once.

Branching (selection) tests a condition and chooses which path to take, using IF … THEN … ELSE. In an IF / ELSE IF / ELSE chain, conditions are checked from the top; the first one that is true runs its block and the rest of the chain is skipped. ELSE runs only if none of the conditions was true.

Conditions are combined with logic (Boolean) operators:

OperatorTrue whenExample (temperature = 25, isRaining = TRUE)
ANDBoth sides are truetemperature > 30 AND isRaining → false
ORAt least one side is truetemperature > 30 OR isRaining → true
NOTReverses true and falseNOT isRaining → false

Comparisons such as >, <, >=, <=, = (equal) and != or <> (not equal) each produce a Boolean, which is what the IF tests.

Looping: FOR and WHILE, and how to trace a loop

Looping (iteration) repeats a block of code while a condition holds or for a set number of times. A loop checks a condition like a branch does, but where a branch picks a path once, a loop goes back and runs the block again.

  • A FOR loop runs a known number of times, stepping a counter: FOR i = 1 TO 3 runs with i = 1, 2 and 3.
  • A WHILE loop repeats as long as its condition is true and checks the condition before each pass, so it stops at the first check that is false. If the condition never becomes false, the loop never ends (an infinite loop).

To find what a loop produces, trace it: write down each variable's value after every pass.

count = 0
FOR i = 1 TO 5
    IF i MOD 2 = 0 THEN
        count = count + 1
    END IF
NEXT i
PRINT count

Here i takes the values 1 to 5; only 2 and 4 are even (MOD gives the remainder of a division), so count becomes 1 and then 2, and the program prints 2. For a WHILE loop, remember the check happens before the update: the value left in the variable afterwards is the first one that made the condition false, not the last one that passed it.

n = 2
WHILE n < 30
    n = n * 2
END WHILE
PRINT n    // n goes 2, 4, 8, 16, 32; 32 < 30 is false, so 32 prints

Typical tracing mistakes are ignoring an IF inside the loop, stopping one pass early, and overwriting a total instead of adding to it.

Tip. Domain 4 is tested with short definitions ("Which of the following best describes…") and everyday scenarios — a student, administrator or developer describes a need, and you pick the language category, data type, programming concept, planning technique or logic structure that fits. Distractors come from the same category, so expect to separate near-twins: compiled vs interpreted, HTML vs XML, char vs string, integer vs float, variable vs constant vs identifier, property vs method, class vs object, parameter vs return value, pseudocode vs flowchart, comments vs documentation, and branching vs looping. A few items show short pseudocode with IF, AND/OR/NOT, FOR or WHILE and ask what it prints, so practise tracing variables pass by pass. Read every qualifier — best, most likely — and the exact requirement in the stem.

Key takeaways
  • Compiled: translated to machine code once, before running — fast, no interpreter needed, built for one platform. Interpreted: translated statement by statement every run — no build step, portable, but slower and needs the interpreter.
  • Scripting automates tasks (PowerShell, Bash); markup tags document structure (HTML predefined tags, XML author-defined tags); query languages retrieve and change database data (SQL); assembly uses mnemonics such as MOV and ADD tied to one processor family.
  • Char = one character; string = text of any length; integer = whole numbers; float = numbers with a fractional part; Boolean = true or false (including the result of a comparison).
  • Values typed into a form or read from a file arrive as strings: adding to one without converting it concatenates ("12" + 5 → 125) instead of adding.
  • Identifier = the name; variable = a value that can change; constant = a value that cannot; array = many values under one name, indexed from 0 in most languages.
  • Functions are reusable named blocks: parameters go in, a return value comes out.
  • A class is the template; objects are instances; properties/attributes describe an object; methods are what it does.
  • Pseudocode plans in plain text that cannot run; flowcharts plan with shapes (oval start/end, rectangle process, parallelogram input/output, diamond decision); comments live inside code, documentation outside it.
  • Sequence runs in order; branching (IF/ELSE IF/ELSE) picks the first true path; loops (FOR/WHILE) repeat — trace each pass to find the output.

Frequently asked questions

What is the difference between a compiled and an interpreted language?

A compiled language is translated into machine code once, before the program is run, producing an executable that runs fast and needs no extra software but is built for one platform. An interpreted language is translated and run statement by statement each time the program runs, so it needs an interpreter installed and usually runs slower, but edited source can be run again directly and the same source runs anywhere the interpreter exists.

Is HTML a programming language?

No. HTML is a markup language: it places predefined tags around content to describe structure such as headings, paragraphs and links, but it contains no program logic such as decisions or loops. XML is also a markup language, but it lets the author define their own tags to describe data.

What is the difference between a char and a string?

A char holds exactly one character, such as a T-shirt size code M or a middle initial. A string holds a sequence of characters of any length, such as a street address. A string can hold a single character too, but a char is the better fit when the value is always one character.

When should a program use a float instead of an integer?

Use a float when the value has a fractional part that matters, such as a body temperature of 36.6 or a distance of 2.75 kilometres. Use an integer for whole-number counts, such as seats or pages, where a fraction never makes sense. Storing a fractional value in an integer loses the part after the decimal point.

What is the difference between a variable and a constant?

Both are named storage for a value. A variable's value can change while the program runs, such as a countdown timer. A constant's value cannot change during the run, such as the number of minutes in an hour, so an accidental change is caught as an error.

Why does the first item in an array have index 0?

Most programming languages use zero-based indexing: the index counts how many positions an element is from the start of the array, so the first element is at index 0, the second at index 1, and so on. In an array holding Mon, Tue and Wed, index 1 is Tue and index 2 is the last valid index. A few languages count from 1 instead.

What is the difference between a property and a method?

Both belong to an object. A property (also called an attribute) is data that describes the object, such as a bank account's owner or balance. A method is an action the object can perform, such as depositing or withdrawing money.

What does each flowchart shape mean?

An oval (rounded rectangle) marks the start or end, a rectangle is a process step, a parallelogram is input or output such as a user entering data, a diamond is a yes/no decision, and arrows show the direction of flow.

Source

This lesson covers the "Software Development Concepts" domain of the official FC0-U71 exam guide. Vendors revise their guides — check the source for the current version.

Test yourself on this topic
FC0-U71 practice questions, with full explanations.
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.

Spotted a mistake in this lesson?