Critiquing CS Assessment from a CS for All lens: Dagstuhl Seminar PosterMark Guzdial
Poster presented at the Dagstuhl Seminar "Assessing Learning in Introductory Computer Science" (http://www.dagstuhl.de/en/program/calendar/semhp/?semnr=16072). I argue that we have to consider what the learner wants to do and wants to be (i.e., their desired Community of Practice) when assessing learning. Different CoP, different outcomes, different assessments.
We’re all doing Agile nowadays, aren’t we? We’ll all delivering software in an Agile way. But what does that mean? Does it mean sprints and stand-ups? Kanban even? But what about Extreme Programming? If as a development team we’re not using pair programming, test driven development, continuous integration, and other XP practices, then we’re not really doing Agile software development and we may be on a march to frustration, or even failure.
I’m going to look at why the current trend of companies and projects adopting Scrum, calling themselves Agile, but not transitioning their development to XP, is a recipe for disaster. I’d like to cover the main practices of XP as well as other good practices that can really help a team deliver quality software, whether they’re doing two-week sprints, Kanban, or even Waterfall.
https://www.youtube.com/watch?v=aZgnY9fAHOA
Critiquing CS Assessment from a CS for All lens: Dagstuhl Seminar PosterMark Guzdial
Poster presented at the Dagstuhl Seminar "Assessing Learning in Introductory Computer Science" (http://www.dagstuhl.de/en/program/calendar/semhp/?semnr=16072). I argue that we have to consider what the learner wants to do and wants to be (i.e., their desired Community of Practice) when assessing learning. Different CoP, different outcomes, different assessments.
We’re all doing Agile nowadays, aren’t we? We’ll all delivering software in an Agile way. But what does that mean? Does it mean sprints and stand-ups? Kanban even? But what about Extreme Programming? If as a development team we’re not using pair programming, test driven development, continuous integration, and other XP practices, then we’re not really doing Agile software development and we may be on a march to frustration, or even failure.
I’m going to look at why the current trend of companies and projects adopting Scrum, calling themselves Agile, but not transitioning their development to XP, is a recipe for disaster. I’d like to cover the main practices of XP as well as other good practices that can really help a team deliver quality software, whether they’re doing two-week sprints, Kanban, or even Waterfall.
https://www.youtube.com/watch?v=aZgnY9fAHOA
Software development is not exactly the same as computer programming. When it comes to a career, development for productization introduces many more things than simply coding. It is important to learn how to accomplish tasks, sharpen skills, develop the career and enjoy it. And last but not the least, how to start?
Introduction to Software Engineering, Software Process, Perspective and Specialized Process Models – Introduction to Agility – Agile process – Extreme programming – XP process - Estimation-FP,LOC and COCOMO I and II,Risk Management, Project Scheduling.
* What is Engineering?
* Who is an Engineer?
* The reasons to become an Engineer
* What is Software Engineering?
* Software Engineering: History
* The principles of Software Engineering
* Who is a Software Engineer?
* The reasons to become Software Engineer
* Requirements of being Software Engineer
* The Areas of Software Engineers
* The working areas of Software Engineers
* Difference between Computer Science and Software Engineering
* Pros and Cons of being Software Engineer
* A Software Engineer Responsibilities
* The Most Popular Software Development Methodologies(Waterfall, Rapid Application, Agile and DevOps) Development Methodology
* Version control
* Centralized Version Control
Based on my observations, in IT we suffer from continuous collective amnesia and we are even proud of it.
For at least 50 years meanwhile, we struggle how to build systems, that are easy to understand, to maintain, to change and to operate in a reliable way. Each time we hit the wall again, we start to look for a new silver bullet on the horizon, strongly believing that it will solve the problem for good.
The key word is "new": "New" is good in our community, while "old" is bad, worthless, crap. We suffer from youthism, not only in recruiting, but in all areas. This way we discard any "old" knowledge, no matter if it is valuable or not. We separate by age, not by value.
Additionally we continuously lose our collective memory with every new generation that leaves university as they are also taught not to value anything old and instead only look for the new, shiny stuff.
While not all old knowledge is worth being preserved, admittedly, there is still a lot of valuable old knowledge available, offering answers to the problems that we face today - creating maintainable and reliable systems, dealing with distribution and tackling complexity, just to name a few of the challenges.
This presentation is a journey through some (very) old computer science papers that contain a lot of very valuable knowledge regarding the problems we face today. For each of the papers, some of the key ideas are presented and how they address our current challenges.
Of course, the voice track is missing and there are a lot more papers that would be worth being mentioned in this presentation. Still, I hope that also the slides alone will be of some value for you - and convince you a bit that not everything "old" in IT is automatically worthless ... ;)
How different groups think about software sustainability, what "equations" we might use to measure it, and how it really can't be measured looking forward but only predicted.
Steve McConnell is CEO and Chief Software Engineer at Construx Software where he writes books and articles, teaches classes, and oversees Construx’s software engineering practices.
Slides for a workshop on agile technical leadership.
Agile teams are complex adaptive systems. In order to obtain a certain level of consistency, required when you want effective teams, teams have to set constraints on themselves and to make strategic decisions. This workshop explores some of the constraints and the difficulties of making strategic technical decisions.
Applying AI to software engineering problems: Do not forget the human!University of Córdoba
The application of artificial intelligence (AI) to software engineering (SE)-problem-solving has been around since the 80s when expert systems were first used. However, it is during the last 10 years that there has been a peak in the use of these techniques, first based on search and optimisation algorithms such as metaheuristics, and later based on machine learning algorithms. The aim is to help the software engineer to automate and optimise tasks of the software development process, and to use valuable information hidden in multiple data sources such as software repositories to execute insightful actions that generate improvements in the performance of the overall process. Today, the use of AI is trendy, and often overused as it could generate artificial results since it does not consider the subjective nature of the software development process requiring the experience and know-how of the engineer. With this Invited Talk, we will discuss different proposals to incorporate the human into the decision-making process in the application of AI for SE (AI4SE), from interactive algorithms to the generation of interpretable models or explanations.
This is take two of the presentation, some things added, some removed, but still the regurgitation is best..
The purpose is to raise your awareness of software architecture in light of modern day agile development. Disciplines to incorporate and reconsider
LaTICE 2016: Learner-Centered Design of Computing Education for AllMark Guzdial
Computing education is in enormous demand. Many students (both children and adult) are realizing that they will need programming in the future. I argue that they are not all going to use programming in the same way and for the same purposes. What do we mean when we talk about teaching *everyone* to program? Should we have the same goals as computer science education for professional software developers? How do we design computing education that works for everyone? I propose the use of a learner-centered design approach to create computing education for a broad audience. I review the history of the idea that programming isn’t just for the professional software developer, and present case studies to explore the idea that computer science for everyone requires us to re-think how we teach and what we teach.
ER(Entity Relationship) Diagram for online shopping - TAEHimani415946
https://bit.ly/3KACoyV
The ER diagram for the project is the foundation for the building of the database of the project. The properties, datatypes, and attributes are defined by the ER diagram.
Software development is not exactly the same as computer programming. When it comes to a career, development for productization introduces many more things than simply coding. It is important to learn how to accomplish tasks, sharpen skills, develop the career and enjoy it. And last but not the least, how to start?
Introduction to Software Engineering, Software Process, Perspective and Specialized Process Models – Introduction to Agility – Agile process – Extreme programming – XP process - Estimation-FP,LOC and COCOMO I and II,Risk Management, Project Scheduling.
* What is Engineering?
* Who is an Engineer?
* The reasons to become an Engineer
* What is Software Engineering?
* Software Engineering: History
* The principles of Software Engineering
* Who is a Software Engineer?
* The reasons to become Software Engineer
* Requirements of being Software Engineer
* The Areas of Software Engineers
* The working areas of Software Engineers
* Difference between Computer Science and Software Engineering
* Pros and Cons of being Software Engineer
* A Software Engineer Responsibilities
* The Most Popular Software Development Methodologies(Waterfall, Rapid Application, Agile and DevOps) Development Methodology
* Version control
* Centralized Version Control
Based on my observations, in IT we suffer from continuous collective amnesia and we are even proud of it.
For at least 50 years meanwhile, we struggle how to build systems, that are easy to understand, to maintain, to change and to operate in a reliable way. Each time we hit the wall again, we start to look for a new silver bullet on the horizon, strongly believing that it will solve the problem for good.
The key word is "new": "New" is good in our community, while "old" is bad, worthless, crap. We suffer from youthism, not only in recruiting, but in all areas. This way we discard any "old" knowledge, no matter if it is valuable or not. We separate by age, not by value.
Additionally we continuously lose our collective memory with every new generation that leaves university as they are also taught not to value anything old and instead only look for the new, shiny stuff.
While not all old knowledge is worth being preserved, admittedly, there is still a lot of valuable old knowledge available, offering answers to the problems that we face today - creating maintainable and reliable systems, dealing with distribution and tackling complexity, just to name a few of the challenges.
This presentation is a journey through some (very) old computer science papers that contain a lot of very valuable knowledge regarding the problems we face today. For each of the papers, some of the key ideas are presented and how they address our current challenges.
Of course, the voice track is missing and there are a lot more papers that would be worth being mentioned in this presentation. Still, I hope that also the slides alone will be of some value for you - and convince you a bit that not everything "old" in IT is automatically worthless ... ;)
How different groups think about software sustainability, what "equations" we might use to measure it, and how it really can't be measured looking forward but only predicted.
Steve McConnell is CEO and Chief Software Engineer at Construx Software where he writes books and articles, teaches classes, and oversees Construx’s software engineering practices.
Slides for a workshop on agile technical leadership.
Agile teams are complex adaptive systems. In order to obtain a certain level of consistency, required when you want effective teams, teams have to set constraints on themselves and to make strategic decisions. This workshop explores some of the constraints and the difficulties of making strategic technical decisions.
Applying AI to software engineering problems: Do not forget the human!University of Córdoba
The application of artificial intelligence (AI) to software engineering (SE)-problem-solving has been around since the 80s when expert systems were first used. However, it is during the last 10 years that there has been a peak in the use of these techniques, first based on search and optimisation algorithms such as metaheuristics, and later based on machine learning algorithms. The aim is to help the software engineer to automate and optimise tasks of the software development process, and to use valuable information hidden in multiple data sources such as software repositories to execute insightful actions that generate improvements in the performance of the overall process. Today, the use of AI is trendy, and often overused as it could generate artificial results since it does not consider the subjective nature of the software development process requiring the experience and know-how of the engineer. With this Invited Talk, we will discuss different proposals to incorporate the human into the decision-making process in the application of AI for SE (AI4SE), from interactive algorithms to the generation of interpretable models or explanations.
This is take two of the presentation, some things added, some removed, but still the regurgitation is best..
The purpose is to raise your awareness of software architecture in light of modern day agile development. Disciplines to incorporate and reconsider
LaTICE 2016: Learner-Centered Design of Computing Education for AllMark Guzdial
Computing education is in enormous demand. Many students (both children and adult) are realizing that they will need programming in the future. I argue that they are not all going to use programming in the same way and for the same purposes. What do we mean when we talk about teaching *everyone* to program? Should we have the same goals as computer science education for professional software developers? How do we design computing education that works for everyone? I propose the use of a learner-centered design approach to create computing education for a broad audience. I review the history of the idea that programming isn’t just for the professional software developer, and present case studies to explore the idea that computer science for everyone requires us to re-think how we teach and what we teach.
ER(Entity Relationship) Diagram for online shopping - TAEHimani415946
https://bit.ly/3KACoyV
The ER diagram for the project is the foundation for the building of the database of the project. The properties, datatypes, and attributes are defined by the ER diagram.
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesSanjeev Rampal
Talk presented at Kubernetes Community Day, New York, May 2024.
Technical summary of Multi-Cluster Kubernetes Networking architectures with focus on 4 key topics.
1) Key patterns for Multi-cluster architectures
2) Architectural comparison of several OSS/ CNCF projects to address these patterns
3) Evolution trends for the APIs of these projects
4) Some design recommendations & guidelines for adopting/ deploying these solutions.
This 7-second Brain Wave Ritual Attracts Money To You.!nirahealhty
Discover the power of a simple 7-second brain wave ritual that can attract wealth and abundance into your life. By tapping into specific brain frequencies, this technique helps you manifest financial success effortlessly. Ready to transform your financial future? Try this powerful ritual and start attracting money today!
2. Three Levels of Learning
• Learning new skills
– Following: “one procedure that works”, “at
least this thing works”
– Detaching:”when does it break down?” “learn
limits of procedure”, “adapt it”, “when is it
appropriate?” Survey paper.
– Fluent:”irrelevant whether following a
particular technique”, ”knowledge has become
integrated”.
3. The Three Levels and
Methodology
• Methodology: a series of related methods
and techniques (Miriam-Webster)
• Level 1: processes, techniques and
standards in detail. Detailed templates in
RUP servel level 1 audience. Big
methodologies of Accenture (anderson
Consulting).
4. Three Levels of Methodology
• Level 2/3: The Pragmatic Programmer:
identifies techniques that a practitioner uses.
A useful library of ideas but the beginner
finds it lacking specific rules.
• Avoid level mixup! It confuses.
5. Shu-Ha-Ri
• Three levels are known in other skill areas:
Aikido (self defense technique)
• Shu: learn. Build technical foundation for
the art. Single instructor.
• Ha: detach. Understand meaning and
purpose; not just repetitive practice.
• Ri: transcend. Practitioner; original thoughts
6. A Cooperative Game of
Invention and Communication
• A fruitful way to think about software
development.
• Games used by mathematicians and
corporate strategiests.
• Kinds of games: zero-sum, positional,
competitive, cooperative, finite, …
7. Software Development
• Group game
• Non-zero-sum: multiple winners and losers.
• Better not viewed as a positional game:
state is recorded.
• Cooperative
• Goal-seeking
• Finite
8. Infinite Games
• Infinite games: organizations, corporations
and countries, a person’s profession.
• Do well in one game to be well positioned
for the next one.
9. Software and Rock Climbing
• Best comparison partner
• Cooperative and goal seeking
– How well they climbed together
– How much they enjoyed themselves
– Reach the top?
• Load bearing
– Climbers must support their weight. Software
must run.
10. Software and Rock Climbing
• Team
• Individuals with talent
• Skill sensitive
• Training
• Tools
• Resource-limited: before nightfall or the
weather changes.
12. A Game of Invention and
Communication
• Software development: group game which
is goal seeking, finite and cooperative
• Team: sponsor, manager, usage specialists,
designers, testers and writers
• Next game: maintenance, build an entirely
different system
13. Cooperative Game of Invention
and Communication
• Measure of quality as a team: how well they
cooperate and communicate during game.
• What are the moves of the game:
– There is nothing in the game but people’s ideas
and the communication of those ideas to their
colleages (including the sponsor) and to the
computer.
14. Emotions, wishes and thoughts
• The task facing the developers:
– They are working on a problem they don’t fully
understand and that lives in emotions, wishes and
thoughts and that changes as they proceed.
– They need to understand.
• Problem space.
• Imagine some mechanism in a viable technology space.
• Express in an executable language which lacks many features
of expression to a system that is unforgiving of mistakes.
15. What is
software development?
• Software Development is a resource-
limited) cooperative game of invention and
communication.
– The primary goal of the game is to deliver
useful, working software.
– The secondary goal of the game is to set up for
the next game. The next game may be to alter
or replace the system or to create a neighboring
system.
Not many people have articulated this before
16. Software and Engineering
• Considering software
development as a game with
moves is profitable.
– Gives us a way to make meaningful
decisions on a project.
• In contrast: speaking of software
development as engineering or
model building does not help.
17. Engineering
• People mostly use engineering to create a
sense of guilt for not having done enough of
something, without being clear of what that
something is.
• Dictionary: The application of science and
mathematics by which the properties of
matter and the sources of energy in nature
are made useful to man (Webster’s Dic.).
18. What is “doing engineering”
• In my experience: involves creating a trade-
off solution in the face of conflicting
demands.
• Also applies to software development.
19. Confusing act and outcome
• Outcome: The factory, which is run while
specific people watch carefully for
variations in quantity and quality of the
items being manufactured.
• Act: ill-defined creative process the
industrial engineer goes through to invent
the manufacturing plant.
20. More like Engineering?
• When people say: “Make software
development more like engineering” they
often mean, “Make it more like running a
plant, with statistical quality control”.
• But: running the plant is not the act of doing
engineering.
21. Look up previous solutions
• The other part of “doing engineering”
• Civil engineers are not supposed to invent
new structures.
– Take soil samples and use the code books to
look for the simplest structure that handles the
required load over the given distance building
on the soil at hand.
– Centuries of tabulation of known solutions
22. Fits marginally
• This only fits marginally the current state of
software development
• We are still in the stage where there is
competition between designs.
• Technologies are changing fast that few
code books exist
• Today there are more variations between
systems than there are commonalities.
23. Return
• Return to consider engineering as thinking
and making trade-offs.
24. Software and Model Building
• Ivar Jacobson: “software development is
model building”
• Leads to inappropriate project decisions
25. Interesting part not in models
• If software development were model
building, then the valid measure of the
quality of the software or of the
development process would be the quality
of the models (fidelity, completeness)
26. But successful project teams say
• The interesting part of what we want to
express doesn’t get captured in those
models. The interesting part is what we say
to each other while drawing on the board.
• We don’t have time to create fancy or
complete models
• Paying attention to the models interfered
with developing the software
27. Sufficiency
• The work products of the team should be
measured for sufficiency with respect to
communicating with the target group.
• It does not matter if incomplete, incorrect
syntax, … if they communicate sufficiently
to the recipients.
29. What is
software development?
• Software Development is a resource-
limited) cooperative game of invention and
communication.
– The primary goal of the game is to deliver
useful, working software.
– The secondary goal of the game is to set up for
the next game. The next game may be to alter
or replace the system or to create a neighboring
system.
Not many people have articulated this before
30. Programmers as Communications
Specialists
• Game of communication: different light on
programmers …
• Stereotyped as noncommunicative individuals
who like to sit in darkened rooms
• High acceptance of programming in pairs …
Programmers thought they would not like it but
they like it! (Extreme Programming)
31. Game of invention
• So far not as a game of communication
• Interest of programmers to discuss
programming matters gets in the way of
them discussing business matters with
sponsors, users and business experts.
32. Universities
• Can reverse the general characteristics by
creating software development curricula
that contain more communication-intensive
courses
• Attracts different students (University of
Aalborg, Denmark).
33. Gaming Faster
• We should not expect orders of magnitude
improvement in program production.
• As much as programming languages may
improve, programminvg will still be limited
by our ability to think through the problem
and the solution.
34. Analogy
• Two other fields of thought expression
– Writing novels
– Writing laws: Lawyers won’t get exponentially
faster at creating contracts and laws!
35. Diminishing Returns
• Because a software development project is
resource limited, spending extra to make an
intermediate work product better than it
needs to be for its purpose is wasteful.
• Work products of every sort are sufficien
37. What goes on in software
development? Intro.
• Most accurate account
• Quality is related to the match between the
theory of the problem and the theory of the
solution.
• The designer’s job is not to pass along the
design but the theories that drive the design.
38. What is programming
• Should be regarded as an activity by which
the programmers form or achieve a certain
kind of insight, a theory, of the matters at
hand.
• Not as a production of a program and other
texts.
39. Programming and the
Programmer’s Knowledge
• Programming = the whole activity of design and
implementation
• Programming = building up knowledge
• What kind of knowledge?
• A theory: a person who has or posses a theory
knows how to do certain things and can support
the actual doing with explanations, justifications
and answers to queries.
40. Theory transcends documentation
in at least 3 essential ways
• How are affairs of the world mapped into the
program text? For any aspect of the world the
programmer can state its manner of mapping into
the program text. [AOSD]
• Can support the program text with some
justification.
• Is able to respond constructively to any demand
for a modification. Similarity of new demand to
similarities already in the system.
41. Problems and Costs of Program
Modifications
• Cost savings by modifying existing program
rather starting from scratch.
• Cheaper? Not supported by other
complicated man-made constructions:
bridges, buildings, etc. Often demolish and
rebuild is most economical.
• Program modification is just text editing?