Abstract through computer science


 


Abstract. I present my thoughts on programming, software development, and computer science
(CS), and their inevitable relationship. Originally this was intended to help prepare some CS courses
aimed (also) at non-CS university students. But it is also relevant for students in secondary education,
especially if they have an interest in participating in the International Olympiad in Informatics.
Keywords: Computer science, programming, software engineering, education, competition.
1. Introduction
The reason for writing this note is my involvement in defining some computer science
(CS) courses at Eindhoven University of Technology in the Netherlands, especially for
non-CS students. Here are some initial questions to set the scene. 


● What should everyone know about computer science?
● What should every university student know about computer science?
● What should every engineering student know about computer science?
With “know about” I do not just mean superficial meta-knowledge, where someone
knows of the existence of some CS topics and the related jargon without knowing any
actual content. That is, the questions could be rephrased as
What CS knowledge and skills should every . . . acquire?
Compare this to similar questions for mathematics, physics, chemistry, biology, etc. The
founders of the International Olympiad in Informatics (IOI) must have asked such a question as well. Note that the three questions are related but do not have the same answers.
Related to this question, one should also ask why such knowledge and skills are relevant. Subsequent questions are:
● When to teach CS? Earlier or later?


 ● How to teach CS? Integrated in the student’s primary domain of interest, or more
purely? According to what didactic principles?
158 T. Verhoeff
An important reference document is ACM/IEEE CS Curriculum (2013), which covers most, if not all, of the topics that I touch here. But it weighs in at over 500 pages,
and in many cases it only presents alternatives and tradeoffs, without making specific
choices or recommendations. We will not answer all questions; neither will we make
definite choices or recommendation. But we will delve a bit deeper into these issues.
(Short answer: my opinions come close to Kernighan (2017); see below for details.)
2. What and Why
Let’s start with the why. Why would someone need to have CS knowledge and skills?
Here are some answers.
1. Because our world has become so much more computational in recent decades.
It is important to know about CS simply in order to “survive”; without that knowledge, life will be more difficult. All kinds of decisions that people need to make
involve computers, automation, and cyberspace. 


We can communicate data to any
place on earth, store all data that we collect, and process data anywhere we like
(also see Verhoeff (2013)). There are many digital dangers nowadays, not in the
least due to the rise of artificial intelligence (AI) driven by big data (I recommend
du Sautoy (2019) for an interesting exploration).
2. Because in both professional and personal life, people (scientists and engineers, but also entrepreneurs, and anyone involved with information and its
processing) will be required to apply some CS knowledge and skills.
Creating a spreadsheet with formulae, developing software tools to help create (nonCS) products, leading a multidisciplinary team to design and develop products that
include domain-specific software, running virtual experiments and analyzing the
results, formulating computational models, communicating domain knowledge to
software developers. Here are some diverse ways in which program code plays an
important role:
● To create products (such as models for 3D printing and pictures using computer graphics).
● To operate devices (such as cars, drones, and robots).
● To provide services on the web (such as interactive maps and secure
email).
● To solve computational problems (such as optimal routing of packages and
aircraft, weather forecasting).
● To create software tools that help develop software (such as compilers, interpreters).
● To analyze massive amounts of data (so as to rank web pages by relevance,
and discover new medicines).
Programming, Software Development, and Computer Science – The Golden Triangle 159
3. Because it is interesting,
Just as any other science can be interesting, CS is a very interesting discipline,
with important relationships to mathematics, physics, chemistry, biology, psychology, economics, etc.
When addressing the what, it is useful to make the following distinctions. We follow
Computing at School Working Group (2012).
Digital Literacy (DL) “the ability to use computer systems confidently and effectively,
including:
● Basic keyboard and mouse skills.
● Simple use of ‘office applications’ such as word processing, presentations and
spreadsheets.
● Use of the Internet, including browsing, searching and creating content for the
Web, communication and collaboration via e-mail, social networks, collaborative
workspace and discussion forums.”
Information Technology (IT) “the creative and productive use and application of computer systems, especially in organisations, including considerations of e-safety, privacy,
ethics, and intellectual property.”
Computer Science (CS) “the study of the foundational principles and practices of computation and computational thinking, and their application in the design and development of computer systems.”
We will presume that our students are digitally literate, and that DL is not a goal of
our courses (nor of the IOI). Although IT is important, we should not include it as goal
of our courses, because IT is focused more on short-term technological issues. The principles that underly IT systems are long lasting, and belong to CS.
Peter Denning provides a broad classification of CS principles in Denning (2003):
Computation “meaning and limits of computation”
Communication “reliable data transmission”
Coordination “cooperation among networked entities”
Recollection “storage and retrieval of information”
Automation “meaning and limits of automation”1
Evaluation “performance prediction and capacity planning”
Design “building reliable software systems”
Recently, several books have appeared that put computer science in a broader perspective: Rosenbloom (2013); St. Amant (2012);


 Tedre (2014). Also the Advanced Placement (AP) Computer Science course is turning to an approach through principles.2
Brian Kernighan (2017) (original article Kernighan (2008); first edition Kernighan
(2011)) has the subtitle ‘What you need to know about computers, the Internet, privacy,
and security’, and is summarized on Amazon.com as follows.
1 In Denning and Martell (2015), automation is dropped as a separate category.
2 http://apcsprinciples.org
160 T. Verhoeff
“[This book] explains how computer hardware, software, networks,
and systems work. Topics include how computers are built and how
they compute; what programming is and why it is difficult; how the
Internet and the web operate; and how all of these affect our security,
privacy, property, and other important social, political, and economic
issues. This book also touches on fundamental ideas from computer
science and some of the inherent limitations of computers.”

legal consultations and travel advisor in the States and within UK

Media solutions , Media company , online classes , learn german , learn english , perfect language , blood cord , rehab , rehabiliations , rehabilitation center , magazitta

Post a Comment

Previous Post Next Post

Contact Form