The Computational Paradigm
by K. Yue
1. Paradigm
- Every discipline has a paradigm: targets, objectives, considerations, bodies of knowledge, methodologies, standards, etc.
Example #1: In pure mathematics (as opposed to applied mathematics)
- An important objective to prove theorems which are true under a set of axioms (statements assumed to be true without proof).
- Methodologies: theorem proving, ...
- Quality considerations:
- primary: truth or correctness.
- simplicity and beauty.
- ...
E.g., the Pythagorean theorem: the sum of the squares of the two shorter sides (legs) of a right-angled triangle is equal to the square of the longest side (hypotenuse)
- Axioms: Five basic axioms of Euclidean geometry.

- A mathematical conjecture is a statement that is believed to be true based on observations and patterns but has not yet been proven or disproven.
E.g., Goldbach's Conjecture (stated in 1742): Every even integer greater than 2 can be expressed as the sum of two prime numbers. E.g.,
- 16 = 5 + 11
- 100 = 3 + 97 = 11 +89 = 17 + 83 = 29 + 71 ...
The Goldbach's conjecture is very easy to state but extremely hard to prove (one way or the other).
Example #2: History
- An important objective: understand the past to better comprehend the present and potentially inform the future.
- Methodology: a range of techniques and procedures for gathering, analyzing, and interpreting evidence from primary and secondary sources to construct a narrative and understanding of historical events.
- Some quality considerations:
- Source selection, evaluation and preparation
- Objectivity and bias mitigation
- Methodology rigor
- Narrative and communication
2. Computing and software development
- What is computer science?
- An example: Computer science (CS) is the study of computers and algorithmic processes, including their principles, their hardware and software designs, their applications, and their impact on society.
(Tucker et al., 2003.)
- It is difficult to find another discipline more applicative than computer science.
- Computer professionals should be generalists.
Software Development
- primary objective: problem solving using software.
- methodologies: computer and software development techniques (that is what your computing degree means).
- One clear quality consideration: correctness, or does the program provide the right answer (expected output)?
- Software testing is about increasing confidence in correctness.
- A test case specifies:
- A test case is passed when the expected output is equal to the actual output.
E.g., a Python to output the square of an input integer.
Test cases:
Case # |
Input |
Expected Output |
1 |
3 |
9 |
2 |
65 |
4425 |
3 |
0 |
0 |
4 |
-65 |
4425 |
5 |
123456789 |
15241578750190521 |
6 |
'hello' |
Error: input is not an integer. |
- Some important software development quality considerations:
- Correctness:
- Software verification:
- Software built according to the software specification. Is the software built right?
- Internal correctness
- e.g. does the program output the square of the input number right?
- Software validation:
- Software met the needs of the problem. Is it the right software?
- Constructing the right software specification: requirement analysis.
- External correctness
- E.g., do the users want the square of the input number?
- Performance
- Cost
- Meeting timeline
- Effectiveness
- Reliability
- Maintenance: software has a life cycle
- Security and privacy
- Do not just focus on internal correctness or software verification.
3. Skills/Traits/Quality/Characteristics of software developers
- People of course have different opinions.
- However, there are many commonalities.
3.1 A simple non-scientific experiment
Conducted a simple Google search for good software developer quality.
Four sources:
- Coding Temple, 6 Key Qualities of Successful Software Engineers, https://www.codingtemple.com/blog/6-key-qualities-of-successful-software-engineers/.
- MatchTech, 7 qualities exceptional developers possess, https://www.matchtech.com/resources/7-qualities-exceptional-developers-possess.
- UMBC, How To Know If Software Development Is The Right Job For You, 8 Hard To Learn Software Developer Skills You Need, https://www.umbctraining.com/software-developer-skills/.
- AlltheCode blog, Software Engineer Personality: 5 Traits For A Great Career, https://allthecode.co/blog/post/software-engineer-personality.
Results:
Coding Temple |
MatchTech |
UMBC |
AlltheCode |
Technical Expertise |
Solid technical knowledge |
Curiosity |
Curiosity |
Problem-Solving Skills |
Maintains an end-user focus |
Creativity |
Persistence |
Attention to details |
Fast self learner |
Empathy |
Ability to learn |
Strong communications and collaboration skills |
Strong communication skills |
Patience, Perseverance and Problem-Solving |
Focus |
Continuous learning and adaptability |
Dependent time and task management |
Analytical |
Pragmatism |
Passion for the craft |
A good team player |
Detail-oriented and organized |
|
|
'Never say die' attitude |
Adaptability |
|
|
|
Communication |
|
- Although you can see their differences, some focus more on skills and qualities. Others focus more on traits.
- However, there are some common themes:
- Strong technical knowledge and expertise
- Strong problem-solving skills: analytical
- Good problem understanding: empathy, focus on end users, ...
- Strong communication skills
- Strong collaboration skills: good team play, dependable
- Continuous and fast self-learning
- Curiosity: passion for the craft
- Persistence: never day die, passion for the craft
- Organization and management skills
- Detail-oriented
- Adaptability
Some Lessons
- We tend to focus on technical matters in our computing degrees.
- Success in the computing profession requires much more than technical expertise. It will be increasing more so.
- Personal traits, characteristics, habits, etc. take a lot of effort and time to develop.
- Consider spending effort and time to cultivate them early and persistently.
- Your university degree may give you an entrance ticket to the job market but it is not sufficient by itself.