admin, Author at DayDreamin’ Comics https://ddcomics.org/author/admin/ Have you ever seen a dream walking? Well i did. Sat, 13 Jun 2026 17:11:42 +0000 en-US hourly 1 https://wordpress.org/?v=7.0 https://i0.wp.com/ddcomics.org/wp-content/uploads/2023/07/cropped-DD-icon.jpg?fit=32%2C32&ssl=1 admin, Author at DayDreamin’ Comics https://ddcomics.org/author/admin/ 32 32 230705254 Write up on “Bram Stoker’s” The Jewel of Seven Stars  https://ddcomics.org/2026/06/13/write-up-on-bram-stokers-the-jewel-of-seven-stars/ https://ddcomics.org/2026/06/13/write-up-on-bram-stokers-the-jewel-of-seven-stars/#respond Sat, 13 Jun 2026 16:55:37 +0000 https://ddcomics.org/?p=6871             Background of the Study       Abraham (Bram) Stoker was born November 8, 1847 in Dublin, Ireland. His father was a civil servant and his mother was a charity worker and writer. Stoker was a sickly child and spent a lot of time in bed. Growing up his mother told him a lot of horror stories […]

The post Write up on “Bram Stoker’s” The Jewel of Seven Stars  appeared first on DayDreamin’ Comics.

]]>
            Background of the Study      

Abraham (Bram) Stoker was born November 8, 1847 in Dublin, Ireland. His father was a civil servant and his mother was a charity worker and writer. Stoker was a sickly child and spent a lot of time in bed. Growing up his mother told him a lot of horror stories which may have influenced his later writings. In 1864 Stoker entered Trinity College Dublin. While attending college he began working as an Irish civil servant. He also worked part time as a free lance journalist and drama critic. In 1876 he met Henry Irving, a famous actor, and they soon became friends. Not long after that, Stoker met and fell in love with an aspiring actress named Florence Balcombe. In 1878 Stoker accepted a job working in London as Irving’s personal secretary. According to an announcement in the December 5, 1878 issue of The Freeman’s Journal: and Daily Commercial Advertiser Stoker and Balcombe were married on December 4, 1878 at St. Anne’s Parish Church, Dublin, by the Rev. Charles W. Benson. On December 9, Stoker and his new wife moved to England to join Irving. His first book “The Duties of Clerks of Petty Sessions in Ireland” though written while he was still in Dublin, was published in 1879. On December 30, 1879 Stoker and his wife had their only child, a son Noel. While in England Stoker also wrote several novels and short stories. His first book of fiction, “Under the Sunset,” was published in 1881. Although best known for “Dracula”, Stoker wrote eighteen books before his death in 1912. He died of exhaustion at the age of 64.        

The Jewel of Seven Stars 

was Bram Stoker’s eighth novel. This novel, along with The Lair of The White Worm, is one of his most famous after Dracula. The novel is a horror story about attempt to resurrect an Egyptian queen. It was first published in the UK in 1903 by William Heinemann, London. The book itself is a 337 page hardcover with a red cloth cover stamped on the spine and front panel in blind, back and gold. In the same year, this book was also published by Heinemann as a part of their Heinemann’s Colonial Library series (No. 276). This edition is a hardcover with a decorated cloth cover [1]. The Jewel of Seven Stars was first published in the US in 1904 by Harper & Brothers Publishers, New York and London. This edition is a 311 page hardcover with a dark blue cloth cover stamped on the spine and front panel in light green and silver. In the same year it was also published in the US by W. R. Caldwell & Co, New York, as a part of The International Adventure Library (Three Owls Edition) series. This edition is a 310 page hardcover with a red cloth cover stamped on the spine and front panel in blind, black and gold.

Literature Review

The Jewel of Seven Stars is relatively unknown, which is surprising — it is one of the earlier stories about the reanimation of an ancient Egyptian mummy, and it is quite a thrilling tale!  It also uses state-of-the-art science of the time to bolster the story — with rather amusing results.

When Malcolm Ross arrives at the Trelawny house, he finds a scene in near chaos.  Abel has been found in his room of Egyptian antiquities, lying on the floor near his safe with his wrist horribly mauled by some animal.  A Doctor Winchester has already been called to tend to the patient, and Ross quickly calls a sharp police officer, Sergeant Daw, to assist in the investigation.  Abel Trelawny is in a cataleptic state unfamiliar to medical science, but seems to have anticipated trouble: he has left explicit written instructions that he is not to be moved from his Egyptian room, and furthermore he is to be guarded at all times by no less than one man and one woman.

The latter directive turns out to be prophetic: the following night, even with people in the room, Abel is attacked again by an unseen force.  Ross and the others realize they are guarding against a deadly and likely supernatural threat — and have no real defense against it.  More troubling, Margaret Trelawny seems to gradually be falling under the influence of this same threat, as her personality shifts subtly but unmistakably.

The arrival of Eugene Corbeck, a colleague of Abel’s freshly returned from Egypt, sheds some light on the situation and raises the stakes considerably.  With Corbeck’s help, Trelawny has spent years of his life seeking out the tomb of the ancient Egyptian queen and sorceress Tera, and nearly all of Tera’s funerary possessions are in Abel’s room — including the queen’s mummy.    Corbeck has brought the final pieces with him, and with everything together the group plans a dangerous experiment that may prove the existence of the supernatural — or lead to their destruction.

The focus and true heroine of this novel is Tera, who, in life, was Queen of the Egypts (Upper and Lower), daughter of Antef, Monarch of the North and the South, Daughter of the Sun and Queen of the Diadems. Even in her day she was the original emancipated woman because she claimed all the privileges of Kingship and masculinity and had power to compel the gods but never gave up her femininity even to the end of this story. According to the story she lived during the Theban Dynasty which was the 11th and at her birth a great aerolite fell, from whose heart was finally extracted that Jewel of Seven Stars which she regarded as the talisman of her life. It’s description is given to be that of a rare ruby with seven stars of which each star had seven points.

                                                Significance of Study

Set in the early twentieth century, the story opens when the first-person narrator, a barrister named Malcolm Ross, is summoned to the house of a young woman he recently met and is attracted to named Margaret Trelawny. She found her father, Abel Trelawny, unconscious on the floor of his study with seven scratches on his arm. The study is filled with Ancient Egyptian artifacts and Ross immediately notices the strong “mummy smell,” referring to the odor of bitumen and other substances the ancient Egyptians used to embalm their dead. Margaret has a letter of instructions from her father should such a strange occurrence take place. He is not to be removed from the room and a man and a woman must stand watch over him at all times. At this point, Malcolm and Margaret, along with a team consisting of Mr. Trelawny’s personal physician, Dr. Winchester, and his nurse watch over the Egyptologist. Over the coming days, strange things happen. Margaret’s cat, Silvio, tries to attack a cat mummy in the room. One night while Malcolm is on watch, he falls asleep. When he awakens, he discovers Mr. Trelawny on the floor and one of the knives in his collection has been moved. At first Silvio is suspected, but they realize the cat could not have pulled a grown man from his resting place on the study’s couch much less moved the knife. After this, Malcolm takes care to wear a respirator to avoid succumbing to the mummy smell. Malcolm also compares notes with Dr. Winchester and Police Superintendent Dolan. It begins to seem that the only person who could be responsible is none other than Margaret Trelawny, but there seems no good reason she would cause the strange occurrences.

At last, an old acquaintance of Mr. Trelawny named Eugene Corbeck arrives. He claims that he’d been tasked with searching out seven special lamps. However, soon after arriving in England, the lamps have vanished. The next day, the lamps are discovered in the Trelawny house. Corbeck gives us some backstory. It turns out that he was Mr. Trelawny’s partner in exploring Egypt. They came across a tomb of Queen Tera, in the Valley of the Sorcerers. Queen Tera had herself mummified with all her organs in tact and believed she had found a way to return to her body in the distant future. The key to the revival is, of course, the titular jewel of the seven stars, which serves as a map for the correct placement of the seven lamps. While Corbeck is telling his story, Abel Trelawny revives. To Malcolm Ross’s delight, now that we’re about two-thirds of the way through the novel, he gives his blessing for Ross to formally court Margaret. Once that’s out of the way, Mr. Trelawny, Corbeck, Ross, Margaret, and Dr. Winchester put plans in motion to see if they can bring Queen Tera back from the dead.

The post Write up on “Bram Stoker’s” The Jewel of Seven Stars  appeared first on DayDreamin’ Comics.

]]>
https://ddcomics.org/2026/06/13/write-up-on-bram-stokers-the-jewel-of-seven-stars/feed/ 0 6871
Write up on Tech Geek History: LISP vs Python (Logical /Functional Programming) Revision 2 https://ddcomics.org/2026/06/13/write-up-on-tech-geek-history-lisp-vs-python-logical-functional-programming-revision-2/ https://ddcomics.org/2026/06/13/write-up-on-tech-geek-history-lisp-vs-python-logical-functional-programming-revision-2/#respond Sat, 13 Jun 2026 07:32:34 +0000 https://ddcomics.org/?p=6835 Write up on Tech Geek history : LISP vs Python Searches Significance of the Study Introduction Python was created by Guido van Rossum and first released on February 20, 1991. While the word “python” might bring to mind a large snake, the language’s name actually comes from the classic BBC comedy series Monty Python’s Flying Circus. What makes […]

The post Write up on Tech Geek History: LISP vs Python (Logical /Functional Programming) Revision 2 appeared first on DayDreamin’ Comics.

]]>
Write up on Tech Geek history : LISP vs Python Searches

Significance of the Study

Introduction

Python was created by Guido van Rossum and first released on February 20, 1991. While the word “python” might bring to mind a large snake, the language’s name actually comes from the classic BBC comedy series Monty Python’s Flying Circus.

What makes Python unique is that it began as the vision and work of a single person. Unlike most languages born in big tech companies, Python was created by Guido – driven by a simple goal: to make programming more intuitive and enjoyable.

From that idea, a global community has grown. Thousands of developers, educators, scientists, and enthusiasts continue to shape Python, expanding its reach into AI, data science, education, and beyond.

Even though Python has many of the features of Lisp, it is instructive to look at the original Lisp evaluation mechanism. At the heart of the Lisp language is a recursive interplay between the evaluation of expressions and application of functions. If you look at the code, there is an apply() function, and an eval() function. The interplay of these two functions results in a very elegant piece of code.

Common Lisp: there are similar patterns than in Python, but we can escape them. We can use macros, be concise and do what we want. We can have the decorator syntax with the cl-annot library, and any other by writing our reader macros (they can bring triply-quoted docstrings, string interpolation, infix notation, C syntax…). It’s not only macros though. The polymorphism of the object system (or generic dispatch) helps, and Lisp’s “moldability” in a whole allows us to refactor code exactly how we want, to build a “Domain Specific Language” to express what we want. Other language features than macros help here, like closures or multiple values (which are different, and safer for refactoring, than returning a tuple).

            Chapter 1: LISP Searches vs Python Searches

LISP Searches

A collection (in other words, a list) of assertions is called a database. Given a database , we can write functions to answer questions such as, “What color is block B2?” or “What blocks support block B1?”

To answer these questions, we will use a function called a pattern matcher to search the database for us. For example, to find out the color of block B2, we use the pattern (B2 COLOR?).

> (fetch’(b2 color ?))

 ((B2 COLOR RED))

To find which blocks support B1, we use the pattern (? SUPPORTS B1):

> (fetch'(? supports b1))

 ((B2 SUPPORTS B1) (B3 SUPPORTS B1))

FETCH returns those assertions from the database that match a given pattern. It should be apparent from the preceding examples that a pattern is a triple, like an assertion, with some of its elements replaced by question marks.

Structures are programmer-defined Lisp objects with an arbitrary number of named components. Structure types automatically become part of the Lisp type hierarchy. The DEFSTRUCT macro defines new structures and specifies the names and default values of their components.

 For example, we can define a structure called STARSHIP like this:

 (defstruct starship (name nil) (speed 0)

(condition ‘green) (shields ‘down))

https://www.cs.cmu.edu/~dst/LispBook/lisp-book-figures.pdf

This DEFSTRUCT form defines a new type of object called a STARSHIP whose components are called NAME, SPEED, CONDITION, and SHIELDS. STARSHIP becomes part of the system type hierarchy and can be referenced by such functions as TYPEP and TYPE-OF.

To introduce graph search programming in Lisp, we next represent and solve the farmer, wolf, goat, and cabbage problem: A farmer with his wolf, goat, and cabbage come to the edge of a river they wish to cross. There is a boat at the river’s edge, but, of course, only the farmer can row it. The boat also can carry only two things (including the rower) at a time. If the wolf is ever left alone with the goat, the wolf will eat the goat; similarly, if the goat is left alone with the cabbage, the goat will eat the cabbage. Devise a sequence of crossings of the river so that all four characters arrive safely on the other side of the river.

 The Lisp version searches the same space and has structural similarities to the Prolog solution; however, it differs in ways that reflect Lisp’s imperative/functional orientation. The Lisp solution searches the state space in a depth-first fashion using a list of visited states to avoid loops. The heart of the program is a set of functions that define states of the world as an abstract data type. These functions hide the internals of state representation from higher-level components of the program. States are represented as lists of four elements, where each element denotes the location of the farmer, wolf, goat, or cabbage, respectively.

Thus, (e w e w) represents the state in which the farmer (the first element) and the goat (the third element) are on the east bank and the wolf and cabbage are on the west. The basic functions defining the state data type will be a constructor, make-state, which takes as arguments the locations of the farmer, wolf, goat, and cabbage and returns a state, and four access functions, farmer-side, wolf-side, goatside, and cabbage-side, which take a state and return the location of an individual. These functions are defined:

(defun make-state (f w g c) (list f w g c))

(defun farmer-side (state) (nth 0 state))

(defun wolf-side (state) (nth 1 state))

 (defun goat-side (state) (nth 2 state))

 (defun cabbage-side (state) (nth 3 state))

The rest of the program is built on these state access and construction functions. In particular, they are used to implement the four possible actions the farmer may take: rowing across the river alone or with either of the wolf, goat, or cabbage. Each move uses the access functions to tear a state apart into its components. A function called opposite (to be defined shortly) determines the new location of the individuals that cross the river, and make-state reassembles

these into the new state.

 For example, the function farmer-takes-self may be defined:

(defun farmer-takes-self (state)

 (make-state (opposite (farmer-side state))

 (wolf-side state)

(goat-side state)

 (cabbage-side state)))

Note that farmer-takes-self returns the new state, regardless of whether it is safe or not. A state is unsafe if the farmer has left the goat alone with the cabbage or left the wolf alone with the goat. The program must find a solution path that does not contain any unsafe states. Although this “safe” check may be done at a number of different stages in the execution of the program, our approach is to perform it in the move functions. This is implemented by using a function called safe, which we also define shortly. safe has the following behavior:

> (safe ‘(w w w w)) ;safe state, return unchanged (w w w w) > (safe ‘(e w w e)) ;wolf eats goat, return nil nil > (safe ‘(w w e e)) ;

What is Search? Search is a process of finding a value in a list of values. In other words, searching is the process of locating given value position in a list of values. Linear Search Algorithm (Sequential Search Algorithm)

• Linear search algorithm finds given element in a list of elements with O(n) time complexity where n is total number of elements in the list.

 • This search process starts comparing of search element with the first element in the list. • If both are matching then results with element found otherwise search element is compared with next element in the list.

• If both are matched, then the result is “element found”. Otherwise, repeat the same with the next element in the list until search element is compared with last element in the list.

• if that last element also doesn’t match, then the result is “Element not found in the list”. That means, the search element is compared with element by element in the list. Linear search is implemented using following steps…

Step 1: Read the search element from the user

Step 2: Compare, the search element with the first element in the list.

Step 3: If both are matching, then display “Given element found!!!” and terminate the function

 Step 4: If both are not matching, then compare search element with the next element in the list.

Step 5: Repeat steps 3 and 4 until the search element is compared with the last element in the list.

Step 6: If the last element in the list is also doesn’t match, then display “Element not found!!!” and terminate the function

General overview Scheme is a functional programming language Scheme is a small derivative of LISP: LISt Processing Dynamic typing and dynamic scooping Scheme introduced static scooping

 · Data Objects

§ An expression is either an atom or a list

§ An atom is a string of characters

Definitions

· Functional programming languages were originally developed specifically to handle symbolic computation and listprocessing applications.

 · In FPLs the programmer is concerned only with functionality, not with memory-related variable storage and assignment sequences.

· FPL can be categorized into two types; ü PURE functional languages, which support only the functional paradigm (Haskell), and ü Impure functional languages that can also be used for writing imperative-style programs (LISP).

A lambda abstraction is rather similar to a function definition in a conventionallanguage, such as C: Inc( x ) int x; {retum( x + 1 );} The formal parameter of the lambda abstraction corresponds to the formal parameter of the function, and the body of the abstraction is an expression rather than a sequence of commands. However, functions in conventional languages must have a name(such as Inc), whereas lambda abstractions are ‘anonymous’functions.

The bodyof a lambdaabstraction extends as far to the right as possible, so that in the expression (Ax. + x 1) 4 the body of the Ax abstraction is (+ x 1), not just +. As usual, we may add extra bracketsto clarify, thus (ax.(+ x 1)) 4 When a lambdaabstraction appears in isolation we may write it without any brackets: dAx.+ x1

Applications

· AI is the main application domain for functional programming, covering topics such as: expert systems knowledge representation machine learning natural language processing modelling speech and vision A. Bellaachia Page: 4 o In terms of symbolic computation, functional programming languages have also proven useful in some editing environments (EMACS) and some mathematical software (particularly calculus)

· Lisp and its derivatives are still the dominant functional languages (we will consider one of the simpler derivatives, Scheme, in some detail).

We define a lambda expression to be an expression in the lambda calculus,

Definition 1 (λ-terms)

We begin by positing the existence of an infinite set of atomic variables, x, y, z, . . ..

We then define the set Λ of λ-terms as follows:

 • every variable is a λ-term,

• if M and N are λ-terms, then apply(M, N) is a λ-term, and

• if x is a variable, and M is a λ-term, then lambda(x, M) is a λ-term

https://www.classes.cs.uchicago.edu/archive/2004/spring/15300-1/docs/lambda-intro.pdf

Syntax of a lambda special form.

A lambda special form has the following syntax: (lambda (x1 x2 … xn) b1 b2 … bk) where:

• each xi is an expression denoting a Lisp symbol;

• each bi is a Lisp expression of any kind;

• n ≥ 0; and • k ≥ 1.

But real-world programming languages, like Lisp, have facilities that are not obviously present in the pure λ-calculus: they have primitive datatypes for things like the integers, they have ways to create composite types (tuples, records, vectors, etc.), and they have control structures such as conditionals and recursion. It is not immediately whether or not analogs to these facilities can be found in the λ-calculus.

Chapter 2

They Called It LISP for a Reason: List Processing

Lists play an important role in Lisp–for reasons both historical and practical. Historically, lists were Lisp’s original composite data type, though it has been decades since they were its only such data type. These days, a Common Lisp programmer is as likely to use a vector, a hash table, or a user-defined class or structure as to use a list.

Practically speaking, lists remain in the language because they’re an excellent solution to certain problems. One such problem–how to represent code as data in order to support code-transforming and code-generating macros–is particular to Lisp, which may explain why other languages don’t feel the lack of Lisp-style lists. More generally, lists are an excellent data structure for representing any kind of heterogeneous and/or hierarchical data. They’re also quite lightweight and support a functional style of programming that’s another important part of Lisp’s heritage.

Thus, you need to understand lists on their own terms; as you gain a better understanding of how lists work, you’ll be in a better position to appreciate when you should and shouldn’t use them.

“There Is No List”

Spoon Boy: Do not try and bend the list. That’s impossible. Instead . . . only try to realize the truth.

Neo: What truth?

Spoon Boy: There is no list.

Neo: There is no list?

Spoon Boy: Then you’ll see that it is not the list that bends; it is only yourself.1

The key to understanding lists is to understand that they’re largely an illusion built on top of objects that are instances of a more primitive data type. Those simpler objects are pairs of values called cons cells, after the function CONS used to create them.

CONS takes two arguments and returns a new cons cell containing the two values.2 These values can be references to any kind of object. Unless the second value is NIL or another cons cell, a cons is printed as the two values in parentheses separated by a dot, a so-called dotted pair.

(cons 1 2) ==> (1 . 2)

The two values in a cons cell are called the CAR and the CDR after the names of the functions used to access them. At the dawn of time, these names were mnemonic, at least to the folks implementing the first Lisp on an IBM 704. But even then they were just lifted from the assembly mnemonics used to implement the operations. However, it’s not all bad that these names are somewhat meaningless–when considering individual cons cells, it’s best to think of them simply as an arbitrary pair of values without any particular semantics. Thus:

(car (cons 1 2)) ==> 1

(cdr (cons 1 2)) ==> 2

Both CAR and CDR are also SETFable places–given an existing cons cell, it’s possible to assign a new value to either of its values.3

(defparameter *cons* (cons 1 2))

*cons*                 ==> (1 . 2)

(setf (car *cons*) 10) ==> 10

*cons*                 ==> (10 . 2)

(setf (cdr *cons*) 20) ==> 20

*cons*                 ==> (10 . 20)

Because the values in a cons cell can be references to any kind of object, you can build larger structures out of cons cells by linking them together. Lists are built by linking together cons cells in a chain. The elements of the list are held in the CARs of the cons cells while the links to subsequent cons cells are held in the CDRs. The last cell in the chain has a CDR of NIL, which–as I mentioned in Chapter 4–represents the empty list as well as the boolean value false.

This arrangement is by no means unique to Lisp; it’s called a singly linked list. However, few languages outside the Lisp family provide such extensive support for this humble data type.

So when I say a particular value is a list, what I really mean is it’s either NIL or a reference to a cons cell. The CAR of the cons cell is the first item of the list, and the CDR is a reference to another list, that is, another cons cell or NIL, containing the remaining elements. The Lisp printer understands this convention and prints such chains of cons cells as parenthesized lists rather than as dotted pairs.

(cons 1 nil)                   ==> (1)

(cons 1 (cons 2 nil))          ==> (1 2)

(cons 1 (cons 2 (cons 3 nil))) ==> (1 2 3)

When talking about structures built out of cons cells, a few diagrams can be a big help. Box-and-arrow diagrams represent cons cells as a pair of boxes like this:

The box on the left represents the CAR, and the box on the right is the CDR. The values stored in a particular cons cell are either drawn in the appropriate box or represented by an arrow from the box to a representation of the referenced value.4 For instance, the list (1 2 3), which consists of three cons cells linked together by their CDRs, would be diagrammed like this:

However, most of the time you work with lists you won’t have to deal with individual cons cells–the functions that create and manipulate lists take care of that for you. For example, the LIST function builds a cons cells under the covers for you and links them together; the following LIST expressions are equivalent to the previous CONS expressions:

(list 1)     ==> (1)

(list 1 2)   ==> (1 2)

(list 1 2 3) ==> (1 2 3)

Similarly, when you’re thinking in terms of lists, you don’t have to use the meaningless names CAR and CDRFIRST and REST are synonyms for CAR and CDR that you should use when you’re dealing with cons cells as lists.

(defparameter *list* (list 1 2 3 4))

(first *list*)        ==> 1

(rest *list*)         ==> (2 3 4)

(first (rest *list*)) ==> 2

Because cons cells can hold any kind of values, so can lists. And a single list can hold objects of different types.

(list “foo” (list 1 2) 10) ==> (“foo” (1 2) 10)

The structure of that list would look like this:

Because lists can have other lists as elements, you can also use them to represent trees of arbitrary depth and complexity. As such, they make excellent representations for any heterogeneous, hierarchical data. Lisp-based XML processors, for instance, usually represent XML documents internally as lists. Another obvious example of tree-structured data is Lisp code itself. In Chapters 30 and 31 you’ll write an HTML generation library that uses lists of lists to represent the HTML to be generated. I’ll talk more next chapter about using cons cells to represent other data structures.

Common Lisp provides quite a large library of functions for manipulating lists. In the sections “List-Manipulation Functions” and “Mapping,” you’ll look at some of the more important of these functions. However, they will be easier to understand in the context of a few ideas borrowed from functional programming.

Functional Programming and Lists

The essence of functional programming is that programs are built entirely of functions with no side effects that compute their results based solely on the values of their arguments. The advantage of the functional style is that it makes programs easier to understand. Eliminating side effects eliminates almost all possibilities for action at a distance. And since the result of a function is determined only by the values of its arguments, its behavior is easier to understand and test. For instance, when you see an expression such as (+ 3 4), you know the result is uniquely determined by the definition of the + function and the values 3 and 4. You don’t have to worry about what may have happened earlier in the execution of the program since there’s nothing that can change the result of evaluating that expression.

Functions that deal with numbers are naturally functional since numbers are immutable. A list, on the other hand, can be mutated, as you’ve just seen, by SETFing the CARs and CDRs of the cons cells that make up its backbone. However, lists can be treated as a functional data type if you consider their value to be determined by the elements they contain. Thus, any list of the form (1 2 3 4) is functionally equivalent to any other list containing those four values, regardless of what cons cells are actually used to represent the list. And any function that takes a list as an argument and returns a value based solely on the contents of the list can likewise be considered functional. For instance, the REVERSE sequence function, given the list (1 2 3 4), always returns a list (4 3 2 1). Different calls to REVERSE with functionally equivalent lists as the argument will return functionally equivalent result lists. Another aspect of functional programming, which I’ll discuss in the section “Mapping,” is the use of higher-order functions: functions that treat other functions as data, taking them as arguments or returning them as results.

Most of Common Lisp’s list-manipulation functions are written in a functional style. I’ll discuss later how to mix functional and other coding styles, but first you should understand a few subtleties of the functional style as applied to lists.

The reason most list functions are written functionally is it allows them to return results that share cons cells with their arguments. To take a concrete example, the function APPEND takes any number of list arguments and returns a new list containing the elements of all its arguments. For instance:

(append (list 1 2) (list 3 4)) ==> (1 2 3 4)

From a functional point of view, APPEND‘s job is to return the list (1 2 3 4) without modifying any of the cons cells in the lists (1 2) and (3 4). One obvious way to achieve that goal is to create a completely new list consisting of four new cons cells. However, that’s more work than is necessary. Instead, APPEND actually makes only two new cons cells to hold the values 1 and 2, linking them together and pointing the CDR of the second cons cell at the head of the last argument, the list (3 4). It then returns the cons cell containing the 1. None of the original cons cells has been modified, and the result is indeed the list (1 2 3 4). The only wrinkle is that the list returned by APPEND shares some cons cells with the list (3 4). The resulting structure looks like this:

In general, APPEND must copy all but its last argument, but it can always return a result that shares structure with the last argument.

Other functions take similar advantage of lists’ ability to share structure. Some, like APPEND, are specified to always return results that share structure in a particular way. Others are simply allowed to return shared structure at the discretion of the implementation.

“Destructive” Operations

If Common Lisp were a purely functional language, that would be the end of the story. However, because it’s possible to modify a cons cell after it has been created by SETFing its CAR or CDR, you need to think a bit about how side effects and structure sharing mix.

Because of Lisp’s functional heritage, operations that modify existing objects are called destructive–in functional programming, changing an object’s state “destroys” it since it no longer represents the same value. However, using the same term to describe all state-modifying operations leads to a certain amount of confusion since there are two very different kinds of destructive operations, for-side-effect operations and recycling operations.5

For-side-effect operations are those used specifically for their side effects. All uses of SETF are destructive in this sense, as are functions that use SETF under the covers to change the state of an existing object such as VECTOR-PUSH or VECTOR-POP. But it’s a bit unfair to describe these operations as destructive–they’re not intended to be used in code written in a functional style, so they shouldn’t be described using functional terminology. However, if you mix nonfunctional, for-side-effect operations with functions that return structure-sharing results, then you need to be careful not to inadvertently modify the shared structure. For instance, consider these three definitions:

(defparameter *list-1* (list 1 2))

(defparameter *list-2* (list 3 4))

(defparameter *list-3* (append *list-1* *list-2*))

After evaluating these forms, you have three lists, but *list-3* and *list-2* share structure just like the lists in the previous diagram.

*list-1*                  ==> (1 2)

*list-2*                  ==> (3 4)

*list-3*                  ==> (1 2 3 4)

Now consider what happens when you modify *list-2*.

(setf (first *list-2*) 0) ==> 0

*list-2*                  ==> (0 4)     ; as expected

*list-3*                  ==> (1 2 0 4) ; maybe not what you wanted

The change to *list-2* also changes *list-3* because of the shared structure: the first cons cell in *list-2* is also the third cons cell in *list-3*. SETFing the FIRST of *list-2* changes the value in the CAR of that cons cell, affecting both lists.

On the other hand, the other kind of destructive operations, recycling operations, are intended to be used in functional code. They use side effects only as an optimization. In particular, they reuse certain cons cells from their arguments when building their result. However, unlike functions such as APPEND that reuse cons cells by including them, unmodified, in the list they return, recycling functions reuse cons cells as raw material, modifying the CAR and CDR as necessary to build the desired result. Thus, recycling functions can be used safely only when the original lists aren’t going to be needed after the call to the recycling function.

To see how a recycling function works, let’s compare REVERSE, the nondestructive function that returns a reversed version of a sequence, to NREVERSE, a recycling version of the same function. Because REVERSE doesn’t modify its argument, it must allocate a new cons cell for each element in the list being reversed. But suppose you write something like this:

(setf *list* (reverse *list*))

By assigning the result of REVERSE back to *list*, you’ve removed the reference to the original value of *list*. Assuming the cons cells in the original list aren’t referenced anywhere else, they’re now eligible to be garbage collected. However, in many Lisp implementations it’d be more efficient to immediately reuse the existing cons cells rather than allocating new ones and letting the old ones become garbage.

NREVERSE allows you to do exactly that. The N stands for non-consing, meaning it doesn’t need to allocate any new cons cells. The exact side effects of NREVERSE are intentionally not specified–it’s allowed to modify any CAR or CDR of any cons cell in the list–but a typical implementation might walk down the list changing the CDR of each cons cell to point to the previous cons cell, eventually returning the cons cell that was previously the last cons cell in the old list and is now the head of the reversed list. No new cons cells need to be allocated, and no garbage is created.

Most recycling functions, like NREVERSE, have nondestructive counterparts that compute the same result. In general, the recycling functions have names that are the same as their non-destructive counterparts except with a leading N. However, not all do, including several of the more commonly used recycling functions such as NCONC, the recycling version of APPEND, and DELETEDELETE-IFDELETE-IF-NOT, and DELETE-DUPLICATES, the recycling versions of the REMOVE family of sequence functions.

In general, you use recycling functions in the same way you use their nondestructive counterparts except it’s safe to use them only when you know the arguments aren’t going to be used after the function returns. The side effects of most recycling functions aren’t specified tightly enough to be relied upon.

However, the waters are further muddied by a handful of recycling functions with specified side effects that can be relied upon. They are NCONC, the recycling version of APPEND, and NSUBSTITUTE and its -IF and -IF-NOT variants, the recycling versions of the sequence functions SUBSTITUTE and friends.

Like APPENDNCONC returns a concatenation of its list arguments, but it builds its result in the following way: for each nonempty list it’s passed, NCONC sets the CDR of the list’s last cons cell to point to the first cons cell of the next nonempty list. It then returns the first list, which is now the head of the spliced-together result. Thus:

(defparameter *x* (list 1 2 3))

(nconc *x* (list 4 5 6)) ==> (1 2 3 4 5 6)

*x* ==> (1 2 3 4 5 6)

NSUBSTITUTE and variants can be relied on to walk down the list structure of the list argument and to SETF the CARs of any cons cells holding the old value to the new value and to otherwise leave the list intact. It then returns the original list, which now has the same value as would’ve been computed by SUBSTITUTE6

The key thing to remember about NCONC and NSUBSTITUTE is that they’re the exceptions to the rule that you can’t rely on the side effects of recycling functions. It’s perfectly acceptable–and arguably good style–to ignore the reliability of their side effects and use them, like any other recycling function, only for the value they return.

Combining Recycling with Shared Structure

Although you can use recycling functions whenever the arguments to the recycling function won’t be used after the function call, it’s worth noting that each recycling function is a loaded gun pointed footward: if you accidentally use a recycling function on an argument that is used later, you’re liable to lose some toes.

To make matters worse, shared structure and recycling functions tend to work at cross-purposes. Nondestructive list functions return lists that share structure under the assumption that cons cells are never modified, but recycling functions work by violating that assumption. Or, put another way, sharing structure is based on the premise that you don’t care exactly what cons cells make up a list while using recycling functions requires that you know exactly what cons cells are referenced from where.

In practice, recycling functions tend to be used in a few idiomatic ways. By far the most common recycling idiom is to build up a list to be returned from a function by “consing” onto the front of a list, usually by PUSHing elements onto a list stored in a local variable and then returning the result of NREVERSEing it.7

This is an efficient way to build a list because each PUSH has to create only one cons cell and modify a local variable and the NREVERSE just has to zip down the list reassigning the CDRs. Because the list is created entirely within the function, there’s no danger any code outside the function has a reference to any of its cons cells. Here’s a function that uses this idiom to build a list of the first n numbers, starting at zero:8

(defun upto (max)

  (let ((result nil))

    (dotimes (i max)

      (push i result))

    (nreverse result)))

(upto 10) ==> (0 1 2 3 4 5 6 7 8 9)

The next most common recycling idiom9 is to immediately reassign the value returned by the recycling function back to the place containing the potentially recycled value. For instance, you’ll often see expressions like the following, using DELETE, the recycling version of REMOVE:

(setf foo (delete nil foo))

This sets the value of foo to its old value except with all the NILs removed. However, even this idiom must be used with some care–if foo shares structure with lists referenced elsewhere, using DELETE instead of REMOVE can destroy the structure of those other lists. For example, consider the two lists *list-2* and *list-3* from earlier that share their last two cons cells.

*list-2* ==> (0 4)

*list-3* ==> (1 2 0 4)

You can delete 4 from *list-3* like this:

(setf *list-3* (delete 4 *list-3*)) ==> (1 2 0)

However, DELETE will likely perform the necessary deletion by setting the CDR of the third cons cell to NIL, disconnecting the fourth cons cell, the one holding the 4, from the list. Because the third cons cell of *list-3* is also the first cons cell in *list-2*, the following modifies *list-2* as well:

*list-2* ==> (0)

If you had used REMOVE instead of DELETE, it would’ve built a list containing the values 1, 2, and 0, creating new cons cells as necessary rather than modifying any of the cons cells in *list-3*. In that case, *list-2* wouldn’t have been affected.

The PUSH/NREVERSE and SETF/DELETE idioms probably account for 80 percent of the uses of recycling functions. Other uses are possible but require keeping careful track of which functions return shared structure and which do not.

In general, when manipulating lists, it’s best to write your own code in a functional style–your functions should depend only on the contents of their list arguments and shouldn’t modify them. Following that rule will, of course, rule out using any destructive functions, recycling or otherwise. Once you have your code working, if profiling shows you need to optimize, you can replace nondestructive list operations with their recycling counterparts but only if you’re certain the argument lists aren’t referenced from anywhere else.

One last gotcha to watch out for is that the sorting functions SORTSTABLE-SORT, and MERGE mentioned in Chapter 11 are also recycling functions when applied to lists.10 However, these functions don’t have nondestructive counterparts, so if you need to sort a list without destroying it, you need to pass the sorting function a copy made with COPY-LIST. In either case you need to be sure to save the result of the sorting function because the original argument is likely to be in tatters. For instance:

CL-USER> (defparameter *list* (list 4 3 2 1))

*LIST*

CL-USER> (sort *list* #'<)

(1 2 3 4)                      ; looks good

CL-USER> *list*

(4)                            ; whoops!

List-Manipulation Functions

With that background out of the way, you’re ready to look at the library of functions Common Lisp provides for manipulating lists.

You’ve already seen the basic functions for getting at the elements of a list: FIRST and REST. Although you can get at any element of a list by combining enough calls to REST (to move down the list) with a FIRST (to extract the element), that can be a bit tedious. So Common Lisp provides functions named for the other ordinals from SECOND to TENTH that return the appropriate element. More generally, the function NTH takes two arguments, an index and a list, and returns the nth (zero-based) element of the list. Similarly, NTHCDR takes an index and a list and returns the result of calling CDR n times. (Thus, (nthcdr 0 …) simply returns the original list, and (nthcdr 1 …) is equivalent to REST.) Note, however, that none of these functions is any more efficient, in terms of work done by the computer, than the equivalent combinations of FIRSTs and RESTs–there’s no way to get to the nth element of a list without following n CDR references.11

The 28 composite CAR/CDR functions are another family of functions you may see used from time to time. Each function is named by placing a sequence of up to four As and Ds between a C and R, with each A representing a call to CAR and each D a call to CDR. Thus:

(caar list) === (car (car list))

(cadr list) === (car (cdr list))

(cadadr list) === (car (cdr (car (cdr list))))

Note, however, that many of these functions make sense only when applied to lists that contain other lists. For instance, CAAR extracts the CAR of the CAR of the list it’s given; thus, the list it’s passed must contain another list as its first element. In other words, these are really functions on trees rather than lists:

(caar (list 1 2 3))                  ==> error

(caar (list (list 1 2) 3))           ==> 1

(cadr (list (list 1 2) (list 3 4)))  ==> (3 4)

(caadr (list (list 1 2) (list 3 4))) ==> 3

These functions aren’t used as often now as in the old days. And even the most die-hard old-school Lisp hackers tend to avoid the longer combinations. However, they’re used quite a bit in older Lisp code, so it’s worth at least understanding how they work.12

The FIRSTTENTH and CARCADR, and so on, functions can also be used as SETFable places if you’re using lists nonfunctionally.

Tablesummarizes some other list functions that I won’t cover in detail.

Table . Other List Functions

FunctionDescription
LASTReturns the last cons cell in a list. With an integer, argument returns the last n cons cells.
BUTLASTReturns a copy of the list, excluding the last cons cell. With an integer argument, excludes the last n cells.
NBUTLASTThe recycling version of BUTLAST; may modify and return the argument list but has no reliable side effects.
LDIFFReturns a copy of a list up to a given cons cell.
TAILPReturns true if a given object is a cons cell that’s part of the structure of a list.
LIST*Builds a list to hold all but the last of its arguments and then makes the last argument the CDR of the last cell in the list. In other words, a cross between LIST and APPEND.
MAKE-LISTBuilds an n item list. The initial elements of the list are NIL or the value specified with the :initial-element keyword argument.
REVAPPENDCombination of REVERSE and APPEND; reverses first argument as with REVERSE and then appends the second argument.
NRECONCRecycling version of REVAPPEND; reverses first argument as if by NREVERSE and then appends the second argument. No reliable side effects.
CONSPPredicate to test whether an object is a cons cell.
ATOMPredicate to test whether an object is not a cons cell.
LISTPPredicate to test whether an object is either a cons cell or NIL.
NULLPredicate to test whether an object is NIL. Functionally equivalent to NOT but stylistically preferable when testing for an empty list as opposed to boolean false.

Mapping

Another important aspect of the functional style is the use of higher-order functions, functions that take other functions as arguments or return functions as values. You saw several examples of higher-order functions, such as MAP, in the previous chapter. Although MAP can be used with both lists and vectors (that is, with any kind of sequence), Common Lisp also provides six mapping functions specifically for lists. The differences between the six functions have to do with how they build up their result and whether they apply the function to the elements of the list or to the cons cells of the list structure.

MAPCAR is the function most like MAP. Because it always returns a list, it doesn’t require the result-type argument MAP does. Instead, its first argument is the function to apply, and subsequent arguments are the lists whose elements will provide the arguments to the function. Otherwise, it behaves like MAP: the function is applied to successive elements of the list arguments, taking one element from each list per application of the function. The results of each function call are collected into a new list. For example:

(mapcar #'(lambda (x) (* 2 x)) (list 1 2 3)) ==> (2 4 6)

(mapcar #’+ (list 1 2 3) (list 10 20 30)) ==> (11 22 33)

MAPLIST is just like MAPCAR except instead of passing the elements of the list to the function, it passes the actual cons cells.13 Thus, the function has access not only to the value of each element of the list (via the CAR of the cons cell) but also to the rest of the list (via the CDR).

MAPCAN and MAPCON work like MAPCAR and MAPLIST except for the way they build up their result. While MAPCAR and MAPLIST build a completely new list to hold the results of the function calls, MAPCAN and MAPCON build their result by splicing together the results–which must be lists–as if by NCONC. Thus, each function invocation can provide any number of elements to be included in the result.14 MAPCAN, like MAPCAR, passes the elements of the list to the mapped function while MAPCON, like MAPLIST, passes the cons cells.

Finally, the functions MAPC and MAPL are control constructs disguised as functions–they simply return their first list argument, so they’re useful only when the side effects of the mapped function do something interesting. MAPC is the cousin of MAPCAR and MAPCAN while MAPL is in the MAPLIST/MAPCON family.

Other Structures

While cons cells and lists are typically considered to be synonymous, that’s not quite right–as I mentioned earlier, you can use lists of lists to represent trees. Just as the functions discussed in this chapter allow you to treat structures built out of cons cells as lists, other functions allow you to use cons cells to represent trees, sets, and two kinds of key/value maps. I’ll discuss some of those functions in the next chapter.


1Adapted from The Matrix (http://us.imdb.com/Quotes?0133093)

2CONS was originally short for the verb construct.

3When the place given to SETF is a CAR or CDR, it expands into a call to the function RPLACA or RPLACD; some old-school Lispers–the same ones who still use SETQ–will still use RPLACA and RPLACD directly, but modern style is to use SETF of CAR or CDR.

4Typically, simple objects such as numbers are drawn within the appropriate box, and more complex objects will be drawn outside the box with an arrow from the box indicating the reference. This actually corresponds well with how many Common Lisp implementations work–although all objects are conceptually stored by reference, certain simple immutable objects can be stored directly in a cons cell.

5The phrase for-side-effect is used in the language standard, but recycling is my own invention; most Lisp literature simply uses the term destructive for both kinds of operations, leading to the confusion I’m trying to dispel.

6The string functions NSTRING-CAPITALIZENSTRING-DOWNCASE, and NSTRING-UPCASE are similar–they return the same results as their N-less counterparts but are specified to modify their string argument in place.

7For example, in an examination of all uses of recycling functions in the Common Lisp Open Code Collection (CLOCC), a diverse set of libraries written by various authors, instances of the PUSH/NREVERSE idiom accounted for nearly half of all uses of recycling functions.

8There are, of course, other ways to do this same thing. The extended LOOP macro, for instance, makes it particularly easy and likely generates code that’s even more efficient than the PUSHNREVERSE version.

9This idiom accounts for 30 percent of uses of recycling in the CLOCC code base.

10SORT and STABLE-SORT can be used as for-side-effect operations on vectors, but since they still return the sorted vector, you should ignore that fact and use them for return values for the sake of consistency.

11NTH is roughly equivalent to the sequence function ELT but works only with lists. Also, confusingly, NTH takes the index as the first argument, the opposite of ELT. Another difference is that ELT will signal an error if you try to access an element at an index greater than or equal to the length of the list, but NTH will return NIL.

12In particular, they used to be used to extract the various parts of expressions passed to macros before the invention of destructuring parameter lists. For example, you could take apart the following expression:

(when (> x 10) (print x))

Like this:

;; the condition

(cadr ‘(when (> x 10) (print x))) ==> (> X 10)

;; the body, as a list

(cddr ‘(when (> x 10) (print x))) ==> ((PRINT X))

13Thus, MAPLIST is the more primitive of the two functions–if you had only MAPLIST, you could build MAPCAR on top of it, but you couldn’t build MAPLIST on top of MAPCAR.

14In Lisp dialects that didn’t have filtering functions like REMOVE, the idiomatic way to filter a list was with MAPCAN.

(mapcan #'(lambda (x) (if (= x 10) nil (list x)))  list) === (remove 10 list)

Python Linear Search

Searching is when we find something in a data structure. We frequently search for strings in things like web pages, PDFs, documents, etc., but we can also search through other data structures, like lists, dictionaries, etc. Depending on how our data is organized, we can search in different ways. For unorganized data, we usually have to do a linear search, which is the first type of search we will discuss. If our data is organized in some way, we can do more efficient searches. If our data is in a strict order, we can perform a binary search, which is the second type of search we will look at.:

 Linear Searching Lecture 10: Linear Searching The most straightforward type of search is the linear search. We traverse the data structure (e.g., a string’s characters, or a list) until we find the result. How would we do a linear search on a list, like this? Let’s say we are searching for 15

. lst = [12, 4, 9, 18, 53, 82, 15, 99, 98, 14, 11]

The most straightforward type of search is the linear search. We traverse the data structure (e.g., a string’s characters, or a list) until we find the result. How would we do a linear search on a list, like this? Let’s say we are searching for 15.

: Linear Searching lst = [12, 4, 9, 18, 53, 82, 15, 99, 98, 14, 11]

def linear_search(lst, value_to_find):

“”” Perform a linear search to find a value in the list :

param lst: a list :param value_to_find: the value we want to find

:return:

the index of the found element, or -1

 if the element does not exist in the list

 >>> linear_search([12, 4, 9, 18, 53, 82, 15, 99, 98, 14, 11], 15) 6

>>> linear_search([12, 4, 9, 18, 53, 82, 15, 99, 98, 14, 11], 42) -1

“”” for i, value in enumerate(lst):

if value == value_to_find:

 return i return –

Chapter 3

Python’s  Linear Search

Linear Search What is a Linear Search? Linear search is a method of finding elements within a list. It is also called a sequential search. It is the simplest searching algorithm because it searches the desired element in a sequential manner. It compares each and every element with the value that we are searching for. If both are matched, the element is found, and the algorithm returns the key’s index position. Concept of Linear Search Let’s understand the following steps to find the element key = 7 in the given list.

Step – 1: Start the search from the first element and Check key = 7 with each element of list x.

Linear Search Algorithm There is list of n elements and key value to be searched. Below is the linear search algorithm.

 1. LinearSearch(list, key)

2. for each item in the list

3. if item == value

4. return its index position

 5. return -1

Python Program Let’s understand the following Python implementation of the linear search algorithm.

Program 1.

def linear_

Search(list1, n, key): 2.

 3. # Searching list1 sequentially

 4. for i in range(0, n):

 5. if (list1[i] == key):

6. return i

7. return -1

8.

9.

10. list1 = [1 ,3, 5, 4, 7, 9]

11. key = 7

12.

13. n = len(list1)

14. res = linear_Search(list1, n, key)

 15. if(res == -1):

16. print(“Element not found”)

17. else:

18. print(“Element found at index: “, res)

 Output: Element found at index:

Explanation: In the above code, we have created a function linear_Search(), which takes three arguments – list1, length of the list, and number to search. We defined for loop and iterate each element and compare to the key value. If element is found, return the index else return -1 which means element is not present in the list.

11. Functional Programming Using Python

 · A list is a collection of objects.

· List constants are surrounded by square brakets and the elements in the list are separated by commas.

· Lists are “mutable” – we can change an element of a list using the index operator

 · Examples: myFriendsList = [ ‘Paul’, ‘Mary’, ‘Sally’ ] myNums = [1,2,3,4] myList = []

 · A list can element of another list:

>>> myList2 = [1, 2]

>>> myList3 = [‘a’, myList2, 50]

>>> myList2 [1, 2]

>>> myList3 [‘a’, [1, 2], 50]

 . Defining functions

· User-defined functions can be created through the use of the lambda operator as follows: (define functionname (lambda (functionparameters)

(expression) (expression) …

(expression) ))

NOTE: The value returned by the function is the value of the last expression in the list ü Example: For example, the function below calculates factorials:

>(define factorial (lambda (n) ( if (< n 3) n (* n (factorial (- n 1)))) )) ;

Value: factorial

 >(factorial 3) ; Value: 6

# Python lambda

x : lambda y : y

Rules of Our System

The Lambda Calculus asserts that any computational system can be implemented with a set of three simple rules:

  • You can define variables
  • You can define single-argument functions
  • You can call single-argument functions

That’s it. No numbers. No operators. No control flow. No data structures.

I find it fascinating that with these very minimal concepts, the Lambda Calculus asserts that we can create a fully functional computer! This is, of course, a very minimal explanation of the rules of the Lambda Calculus, and I invite you to consult the references above for more information and formal definitions!

x = lambda a : a + 10
print(x(5))

https://www.cs.umd.edu/class/spring2024/cmsc330-030X-040X/assets/notes/lambdacalc.pdf

Why Use Lambda Functions?

The power of lambda is better shown when you use them as an anonymous function inside another function.

Say you have a function definition that takes one argument, and that argument will be multiplied with an unknown number:

def myfunc(n):
  return lambda a : a * n

A Data structures are specialized objects for organizing data efficiently. There are many kinds, each with specific strengths and weaknesses, and different applications require different structures for optimal performance. For example, some data structures take a long time to build, but once built their data are quickly accessible. Others are built quickly, but are not as efficiently accessible. These strengths and weaknesses are determined by how the structure is implemented. Python has several built-in data structure classes, namely list, set, dict, and tuple. Being able to use these structures is important, but selecting the correct data structure to begin with is often what makes or breaks a good program. In this lab we create a structure that mimics the built-in list class, but that has a different underlying implementation. Thus our class will be better than a plain Python list for some tasks, but worse for others.

Linked Lists A linked list is a data structure that chains nodes together. Every linked list needs a reference to the first node in the chain, called the head. A reference to the last node in the chain, called the tail, is also often included. Each node instance in the list stores a piece of data, plus at least one reference to another node in the list. The nodes of a singly linked list have a single reference to the next node in the list (see Figure 1.1), while the nodes of a doubly linked list have two references: one for the previous node, and one for the next node in the list (see Figure 1.2). This allows for a doubly linked list to be traversed in both directions, whereas a singly linked list can only be traversed in one direction.

class Linked

ListNode(Node):

 “””A node class for doubly linked lists. Inherits from the ‘Node’ class. Contains references to the next and previous nodes in the linked list.

 “”” def __init__(self, data): “

“”Store ‘data’ in the ‘value’ attribute and initialize attributes for the next and previous nodes in the list.

“”” Node.__init__(self, data)

 # Use inheritance to set self.value

. self.next = None

 self.prev = None

Linked Lists:

A linked list is a collection of objects/nodes, where each node contains both the item stored in the list, as well as a “pointer” to the next node in the list.

Linked lists typically have three instance variables: a head pointer (self.head), a tail pointer (self.tail), and the number of nodes in the list (self.size)

In the above picture, the linked list has 5 nodes, and each node stores a simple string, as well as a pointer to the next node in the list. In class I often draw linked lists and nodes as follows:

              ——    ——   ——   ——   ——

self.head –> |rich|    |lisa|   |andy|   |zach|   |tia |<–self.tail

              ——    ——   ——   ——   ——

              |    |–> |    |–>|    |–>|    |–>|    |–>None

              ——    ——   ——   ——   ——

                             self.size = 5

Linked lists are often used to create other useful data structures, such as stacks and queues. They are also a good introduction to more advanced data structures, such as binary trees.

One big advantage of the linked list is not needing large chunks of consecutive memory. Each node in the list is just put in memory wherever there is space, and all nodes are “linked” together into one “list”.

Also, adding an item into the middle of the list does not require shifting all other elements down one slot. Simply reset the next “pointers” to include the new node.

Implementing A Linked List

We will implement a linked list using two classes:

  1. Node, which will store a data value (the list item) and a “pointer” to the next node in the list
  2. LinkedLlist, which will store pointers to the head Node and the tail Node, as well as the current size of the list.

the Node class:

Let’s write a Node class, where each node has two instance variables: one to hold the node data (call it “data”), and one to hold a pointer to another node (call it “next”). Later we will use these node objects to build a linked-list!

The post Write up on Tech Geek History: LISP vs Python (Logical /Functional Programming) Revision 2 appeared first on DayDreamin’ Comics.

]]>
https://ddcomics.org/2026/06/13/write-up-on-tech-geek-history-lisp-vs-python-logical-functional-programming-revision-2/feed/ 0 6835
Write up on Discrete Mathematics in an educational Curriculum for grade school and high school students (Part 1 & Part 2) https://ddcomics.org/2026/06/13/write-up-on-discrete-mathematics-in-an-educational-curriculum-for-grade-school-and-high-school-students-part-1-part-2/ https://ddcomics.org/2026/06/13/write-up-on-discrete-mathematics-in-an-educational-curriculum-for-grade-school-and-high-school-students-part-1-part-2/#respond Sat, 13 Jun 2026 06:24:13 +0000 https://ddcomics.org/?p=6828  Literature Review1.1 Discrete Mathematics used for Computer Science as a Fundamental basics to learn AlgorithmsThe Need for Computer ScienceThis is largely based on how exposed students are to computational thinking and computer science concepts. Additionally, educating students in computer science is beneficial for all students. With the digital age rising, there is a need to […]

The post Write up on Discrete Mathematics in an educational Curriculum for grade school and high school students (Part 1 & Part 2) appeared first on DayDreamin’ Comics.

]]>
 
Literature Review
1.1 Discrete Mathematics used for Computer Science as a Fundamental basics to learn Algorithms
The Need for Computer Science
This is largely based on how exposed students are to computational thinking and computer science concepts. Additionally, educating students in computer science is beneficial for all students. With the digital age rising, there is a need to develop logical thinking and problem-solving which are all a part of learning computer science.
Computer Science Standards and Model Curriculum give students experiences that help them discover and take part in a world continually influenced by technology and to understand the role of computing
What is Discrete Mathematics?
Discrete Mathematics is an area of mathematics that most closely connects with the field of computer science. It is the study of mathematical structures that are countable or otherwise distinct and separable (as opposed to continuous quantities like in algebra or calculus).
What Is Discrete Mathematics?
Discrete Mathematics is a rapidly growing and increasingly used area of mathematics, with many practical and relevant applications.
• Because it is grounded in real-world problems, discrete mathematics lends itself easily to implementing the recommendations fo the National Council of Teachers of Mathematics (NCTM) standards. (The recently published Standards and Principles for School Mathematics notes that “As an active branch of contemporary mathematics that is widely used in business and industry, discrete mathematics should be an integral part of the school mathematics curriculum.”)
• Because many discrete math problems are simply stated and have few mathematical prerequisites, they can be introduced at all grade levels, even with children who are not yet fluent readers.
Discrete mathematics will make math concepts come alive for your students. It’s an excellent tool for improving reasoning and problem-solving skills, and is appropriate for students at all levels and of all abilities. Teachers have found that discrete mathematics offers a way of motivating unmotivated students while challenging talented students at the same time.
Because many discrete math problems are simply stated and have few mathematical prerequisites, they can be easily be introduced at the middle school grade level.
1.2 How Discrete Mathematics Can Help Students
The National Council of Teachers of Mathematics (NCTM) recommends that discrete mathematics be implemented into the curriculum as early as the seventh 4 grade, because it benefits students and helps maintain their interest in mathematics [5, p. 362]. But beyond what the NCTM recommends, is discrete mathematics really advantageous to students, and if so, why? Discussed below are some of the reasons. First, it keeps students interested in mathematics. It helps entice them to regularly attend and participate in class. When students are interested in the material, it is easier for them to learn and stay focused when presented with tough, complex problems. While solving problems in discrete mathematics can be complicated, the problems themselves can be easily understood. The students, therefore, are able to understand and work the problems, which gives them a much needed confidence [12, pp. 35-36].
 Many students are lost from mathematics forever during high school. Discrete mathematics is a great way to help these students stay interested and involved in mathematics. Second, discrete mathematics benefits students by allowing them to see the connections between the mathematics they are studying and the real world. “For example, we might be able to convince our students that calculus can be used to help civil engineers build better bridges, but the students still might not see how it really works. But in graph theory [and other areas of discrete mathematics], we can explain the applications, the students can see how they work, and they can actually see real problems” [7, p. 94]. Teachers need to help students dismiss the idea that there is nothing new left to discover in mathematics and help them to look beyond basic arithmetic computation.
 Discrete mathematics is the mathematical foundation of computer science and is “used extensively in business, industry, and government. For example, difference equations are an essential mathematical tool for high-technology engineering firms, and matrices are indispensable for computer graphics” [4, p. 75].
 Another benefit of discrete mathematics is that it enriches the traditional curriculum. It places more emphasis on teaching students to think mathematically and less emphasis on certain computational skills [1, p. 83]. Discrete mathematics lends itself to group work more easily than does traditional mathematics. It is also helpful to teachers because it gives them a new way of teaching elements in the curriculum, which may make the traditional concepts easier to teach and learn.
By using discrete mathematics to teach already existing elements in the curriculum, it can help to change the way students view mathematics altogether. Below are some of the ways that discrete mathematics complements topics already in the traditional secondary-school curriculum: · Algebraic skills are needed and reinforced throughout discrete mathematics. · In geometry, graph theory can be used to enrich the study of polygons and polyhedral. · Difference equations give use to the fascinating new geometry of fractals [4, p. 75]. The NCTM does not provide teachers with detailed guidelines. They only provide a set of goals and topics to cover in high school for discrete mathematics. Therefore, it is up to each individual teacher, or the mathematics department within each school, to decide how these topics should be implemented.

Unfortunately, many teachers are unfamiliar, and even uncomfortable, with discrete mathematics. Thus, it can be difficult for them to know how to incorporate these topics into the curriculum. Because discrete mathematics can be used to teach traditional elements in the curriculum, these topics can be covered in different ways throughout the school year, without having to set aside extra time to cover them. 6 While the implementation of discrete mathematics into the curriculum is not discussed here in detail, many references cited in this thesis give numerous ideas on how to do so. Some also give sample lessons and projects for different skill levels. Some excellent resources are: · DIMACS Series in Discrete Mathematics and Theoretical Computer Science 36 (eds. J.G. Rosenstein, D.S. Franzblau, and F.S. Roberts), American Mathematical Society; 1997. · Discrete Mathematics Across the Curriculum, K–12 (eds. M.J. Kenney, and C.R. Hirsch), NCTM, Inc, Reston, Virginia; 1991. · Mathematics Teacher, a monthly journal magazine.
https://repository.lsu.edu

These political battles over the mathematics curriculum resulted in discrete mathematics largely being ignored in these countries. Of the discrete mathematics topics specifed above, very few are part of the standard curriculum in most of the countries we are familiar with. Through personal communication, it appears that:
Combinatorics is included in the secondary curriculum of several countries, including Spain, US, England, Germany, Hungary, Brazil, Israel.
Connecting recursive patterns and sequences with algebraic formulas is taught, to some degree, in Spain, Germany, and the United States.
• Graph theory is included in Italy and some isolated state curriculum in the US. In England, students focusing on mathematics can take a special track in which they have extensive exposure to discrete mathematics. In many countries, it appears that the opportunities for dealing with discrete mathematics in schools, especially when it goes beyond combinatorics, are often only seen on the level of optional recreational mathematics (Colipan & Liendo, 2022; Gravier & OuvrierBufet, 2022; Greefrath et al., 2022). We wonder if one contributing issue for the lack of discrete topics taught in the schools may be that the term discrete mathematics’ is not well understood. Perhaps, each of the discrete topics mentioned above should be considered individually. For example, fair division algorithms and economic game theory are almost self-explanatory. While combinatorics sounds complicated, counting is clearly important. Instead of using the termgraph theory’ which may be misleading to some, we could talk about vertex-edge graphs or networks, which most people are familiar with. Iteration can be described in terms of simple recursive situations, such as repeatedly folding a piece of paper or compounding of interest, along with its accessibility through the use of spreadsheets. Therefore, it might be more productive to talk about the individual discrete topics than the discipline as a whole. This is also intended to describe the mentioned topic areas of discrete mathematics for school more clearly once again. We therefore shortly go into a little more detail on the most common discrete topics and how they may support mathematical competencies.



1.3  Potential benefits of discrete mathematics topics for mathematics education
We see the potential benefits of teaching discrete mathematical topics in three broad areas, and some of these benefits have been highlighted in existing literature. The first potential benefit is offered by the content, which is accessible and offers interesting and relevant topics for teaching and learning (Anderson et al., 2004; DeBellis & Rosenstein, 2004).
Potential benefits of discrete mathematics topics for mathematics education
The second potential benefit is the learning of mathematics and the acquisition of general mathematical competencies (Coenen et al., 2018; Vorhölter et al., 2019) including afect (Goldin, 2018) that influences the learning of mathematics and the third potential is the relevance of discrete mathematics for living in the modern world (Hart & Martin, 2018; Rosenstein, 2007). In this section, we will discuss general benefts and in Sect. 6, the benefts resulting from specifc discrete mathematics topics.
Accessible topics for teaching and learning As early as the end of the 1980s, there were calls to integrate discrete mathematics into teaching, not only in higher education but also in schools (Dolgos, 1990). Advocates of discrete mathematics have noted that problems in discrete mathematics are relatively accessible, in the sense that a student may be able to understand what a problem is asking or can explore a situation without needing a lot of prior mathematical experience (Anderson et al., 2004; Devaney, 2018; Ferrarello & Mammana, 2018; Rosenstein, 2007). This is often because the problems themselves do not require knowledge of technical definitions or specific mathematical knowledge, and students can exemplify and explore objects.
The discrete nature of the objects would seem to lend itself to this accessibility. This accessibility of discrete mathematics is something that seems to be agreed upon by many mathematicians, mathematics educators and mathematics education researchers, and it is often used as an argument for the importance of the inclusion of discrete mathematics in curriculum (Anderson et al., 2004; Burghes, 1995; Dolgos, 1990; Hart & Martin, 2018). While we note that this is an aspect of discrete mathematics that would benefit from more systematic study and research, this accessibility has come through in some research studies, but not as an explicit focus of the study. Some of the research on the teaching and learning of discrete mathematics with younger students highlights not only the accessibility of topics but that this accessibility can help students make sense of the current curriculum.
 For example, iterative problems and difference equations can help students learn algebra (Amit & Neria, 2008; Blanton & Kaput, 2005; Carraher et al., 2008; Radford, 2008; Rivera & Becker, 2008; Sandefur et al., 2018; Steele, 2008; Yeap & Kaur, 2008). Even very young students can reason about combinatorial problems in meaningful ways (de Beer et al., 2015; Maher et al., 2011). English (1991, 1993) reports on young children’s strategies as they engage with combinatorial problems. As another example, students can naturally `invent’ graph theory to solve a problem (Ferrarello & Mammana, 2018; Greefrath et al., 2022; van den Heuvel & Krabbendam, 1991). We can only wonder how much better would the students’ work be if they already knew some graph theory or had previous experience with counting or recursive problems?

For many topics in discrete mathematics, students ranging from young children to undergraduate students can be posed similar questions and have a reasonable chance at investigating the problem at their different levels. This results in self differentiating tasks that allow individual approaches to the problem (Ostkirchen & Greefrath, 2022). For example, how many 2-color towers can I make of height 5, can be extended to more complicated problems for older students by increasing the number of colors and the height of the tower. Maher et al. (2011) describe the use of combinatorial problems in such contexts among students in a longitudinal study. Students as young as the third grade can investigate recursive structures they build with toothpicks and stickers while high school students can develop recursive models of bacteria growth and the spread of epidemics, which is a simplified version of models studied by epidemiologists (Radford, 2008; Sandefur & Manaster, 2022; Yeap & Kaur, 2008).
https://link.springer.com/article/10.1007/s11858-022-01399-7
Chapter 2:
Write up on Discrete Mathematics Logic, Tree, and Lambda Equations could be utilized in Highschool Computer Science Curriculum
Discrete Mathematics
2.1
The key aspect to rooted trees — which is both their greatest advantage and greatest limitation — is that every node has one and only one path to the root. This behavior is inherited from free trees: as we noted, every node has only one path to every other.
Trees have a myriad of applications. Think of the files and folders on your hard drive: at the top is the root of the filesystem (perhaps “/” on Linux/Mac or “C:\\” on Windows) and underneath that are named folders. Each folder can contain files as well as other named folders, and so on down the hierarchy. The result is that each file has one, and only one, distinct path to it from the top of the filesystem. The file can be stored, and later retrieved, in exactly one way.
An “org chart” is like this: the CEO is at the top, then underneath her are the VP’s, the Directors, the Managers, and finally the rank-and-file employees. So is a military organization: the Commander in Chief directs generals, who command colonels, who command majors, who command captains, who command lieutenants, who command sergeants, who command privates.
The human body is even a rooted tree of sorts: it contains skeletal, cardiovascular, digestive, and other systems, each of which is comprised of organs, then tissues, then cells, molecules, and atoms. In fact, anything that has this sort of part-whole containment hierarchy is just asking to be represented as a tree.
In computer programming, the applications are too numerous to name. Compilers scan code and build a “parse tree” of its underlying meaning. HTML is a way of structuring plain text into a tree-like hierarchy of displayable elements. AI chess programs build trees representing their possible future moves and their opponent’s probable responses, in order to “see many moves ahead” and evaluate their best options. Object-oriented designs involve “inheritance hierarchies” of classes, each one specialized from a specific other. Etc. Other than a simple sequence (like an array), trees are probably the most common data structure in all of computer science.
Rooted tree terminology
root.
Figure 2-1

in our example. Note that unlike trees in the real world, computer science trees have their root at the top and grow down. Every tree has a root except the empty tree, which is the “tree” that has no nodes at all in it. (It’s kind of weird thinking of “nothing” as a tree, but it’s kind of like the empty set ∅∅, which is still a set.)
parent.
Every node except the root has one parent: the node immediately above it. D’s parent is C, C’s parent is B, F’s parent is A, and A has no parent.
child.
Some nodes have children, which are nodes connected directly below it. A’s children are F and B, C’s are D and E, B’s only child is C, and E has no children.
sibling.
A node with the same parent. E’s sibling is D, B’s is F, and none of the other nodes have siblings.
ancestor.
Your parent, grandparent, great-grandparent, etc., all the way back to the root. B’s only ancestor is A, while E’s ancestors are C, B, and A. Note that F is not C’s ancestor, even though it’s above it on the diagram: there’s no connection from C to F, except back through the root (which doesn’t count).
descendent.
Your children, grandchildren, great-grandchildren, etc., all the way the leaves. B’s descendents are C, D and E, while A’s are F, B, C, D, and E.
leaf.
A node with no children. F, D, and E are leaves. Note that in a (very) small tree, the root could itself be a leaf.
internal node.
Any node that’s not a leaf. A, B, and C are the internal nodes in our example.
depth (of a node).
A node’s depth is the distance (in number of nodes) from it to the root. The root itself has depth zero. In our example, B is of depth 1, E is of depth 3, and A is of depth 0.
height (of a tree).
A rooted tree’s height is the maximum depth of any of its nodes; i.e., the maximum distance from the root to any node. Our example has a height of 3, since the “deepest” nodes are D and E, each with a depth of 3. A tree with just one node is considered to have a height of 0. Bizarrely, but to be consistent, we’ll say that the empty tree has height -1! Strange, but what else could it be? To say it has height 0 seems inconsistent with a one-node tree also having height 0. At any rate, this won’t come up much.
level.
All the nodes with the same depth are considered on the same “level.” B and F are on level 1, and D and E are on level 3. Nodes on the same level are not necessarily siblings. If F had a child named G in the example diagram, then G and C would be on the same level (2), but would not be siblings because they have different parents. (We might call them “cousins” to continue the family analogy.)
subtree.
Finally, much of what gives trees their expressive power is their recursive nature. This means that a tree is made up of other (smaller) trees. Consider our example. It is a tree with a root of A. But the two children of A are each trees in their own right! F itself is a tree with only one node. B and its descendents make another tree with four nodes. We consider these two trees to be subtrees of the original tree. The notion of “root” shifts somewhat as we consider subtrees — A is the root of the original tree, but B is the root of the second subtree. When we consider B’s children, we see that there is yet another subtree, which is rooted at C. And so on. It’s easy to see that any subtree fulfills all the properties of trees, and so everything we’ve said above applies also to it.
Binary trees (BT’s)
The nodes in a rooted tree can have any number of children. There’s a special type of rooted tree, though, called a binary tree which we restrict by simply saying that each node can have at most two children. Furthermore, we’ll label each of these two children as the “left child” and “right child.” (Note that a particular node might well have only a left child, or only a right child, but it’s still important to know which direction that child is.)
The left half of is a binary tree, but the right half is not (C has three children). A larger binary tree (of height 4) is shown in  .
Traversing binary trees
There were two ways of traversing a graph: breadth-first, and depth-first. Curiously, there are three ways of traversing a tree: pre-orderpost-order, and in-order. All three begin at the root, and all three consider each of the root’s children as subtrees. The difference is in the order of visitation.
Figure 2-2
The node at the top of the tree, which is A

Rules in Prolog
Using rules, we can build a relationships among facts.
% Define what a mother, father, and a grandparent is
mother(M, C) :- parent(M, C), female(M).
father(F, C) :- parent(F, C), male(F).
grandparent(X, Z) :- parent(X, Y), parent(Y, Z).
The rule named mother defines the meaning of the mother relationship: If M is a parent of C, and if M is female, then M is a mother.
Similarly, the father rule defines the meaning of the father relationship: If F is a parent of C, and if F is male, then F is a father.
Lastly, the grandparent rule defines the meaning of the grandparent relationship: if X is a parent of Y, and Y is a parent of Z, then X is a grandparent of Z.
Rules in Prolog
Using rules, we can build a relationships among facts.
% Define what a mother, father, and a grandparent is
mother(M, C) :- parent(M, C), female(M).
father(F, C) :- parent(F, C), male(F).
grandparent(X, Z) :- parent(X, Y), parent(Y, Z).
The rule named mother defines the meaning of the mother relationship: If M is a parent of C, and if M is female, then M is a mother.
Similarly, the father rule defines the meaning of the father relationship: If F is a parent of C, and if F is male, then F is a father.
Lastly, the grandparent rule defines the meaning of the grandparent relationship: if X is a parent of Y, and Y is a parent of Z, then X is a grandparent of Z.
                                                Logical Programming
Logic is the discipline concerned with unassailably valid reasoning. By valid we mean that if we start with true statements and from them deduce new statements, following the given logical laws of deduction, we will always end up with new statements that are also true. Logics are thus systems of symbols and rules for manipulating them that have the property that syntactic deduction, involving mechanical manipulation of strings, is always a semantically valid operation, involving the truths of derived statements.
There is not just one logic. There are many. First-order predicate logic with equality is central to everyday mathematics. Propositional logic is equivalent to the language of Boolean expressions as found in conditional expressions in most programming languages. Temporal logics provide ways to reason about what statements remain true in evolving worlds. Dependent type theory is a logic, a richer form of predicate logic, in which propositions are formalized as types and proofs are essentially programs and data structures written in pure, typed, functional programming languages, and so can be type checked for correctness.
Logic is a pillar of computer science. It has been said that logic is to computer science as calculus is to natural science and engineering. As scientists and engineers use everyday mathematics to represent and reason about properties of physical things, so computer scientists use various logical languages to specify and reason about properties of programs, algorithms, the states of programs as they execute, problems to be solved by algorithms, and even about the real world in which software is meant to operate.
Propositional logic , essentially the language of Boolean expressions, is ubiquitous in programming. First-order predicate logic is widely used to reason about many issues that arise in computer science, from the complexity of algorithms to the correctness of programs. Hoare logic is a specialized extension of first-order predicate logic that is especially well suited to specifying how programs must behave and for showing that they do behave according to given logical specifications. Dependent type theory is the logic of modern proof assistant tools, including Lean (as well as Coq and Agda), which we will use in this class.
Dependent type theory and the tools that support it now play important roles in both the development of programming languages and in the production of trustworthy software. In lieu of testing of a given computer program to see if it works correctly on some inputs, one proves that it works correctly on all possible inputs. A tool then checks such proofs for correctness. Mathematicians are increasingly interested in the possibilities for automated checking of complex proofs as well.
At the heart of logic are the concepts of propositions and proofs. A proposition is an expression that we interpret as making a claim that some particular state of affairs holds in some particular domain of discourse (some world of interest). A proof is a compelling argument, in a precise form, that shows beyond any doubt that such a proposition is true. The existence of a valid proof of a proposition shows that it is true. In mathematical logic, the arbiter of truth is the existence of a proof. Proof implies truth; truth demands proof.
This first section of this course, on logic, provides a rigorous survey of forms of propositions and the construction and use of corresponding proofs in the language of predicate logic. You will learn how to write propositions in predicate logic, and how to both construct and use proofs of them in a logical reasoning system called natural deduction. As you will also quickly see, natural deduction is essentially a form of computation in a typed, pure functional programming language in which all programs terminate (there can be no infinite loops). To learn logic in this style is thus also learn a very important style of programming: functional programming. You will learn to compute with propositions and proofs.
 propositions need not be a true statement. Propositions only need to be declarative. Their truth value may be true or false. However, all propositions must have a particular truth value. The statement cannot be both true and false. The statement must be able to be interpreted as true or false.
From the previous definition and examples, propositions are therefore not questions, general statements, demands, or hypotheses. Propositions do not have any variables, quantifiers, or parameters (e.g. the words “some” or “any” typically do not appear). Consider now a few non-examples.
Examples of statements that are not propositions
Do you have a dog?
Let’s go!
Some coffee mug with a mermaid on it.
x+2=3
y=x2−1
Checkpoint
Are each of these propositions?
I am a dolphin.
Supercalifragilisticexpialidocious.
Jupiter is the 5th planet from the sun.
On Thursdays, van Gogh painted landscapes.
11+56∗3−819=9
Solution
Constructing Propositions
An entire proposition is often denoted by a single propositional variable. Propositional variables are typically among p,q,r,s,t,….
Using propositional variables
p:= “The sky is blue”
q:= “The sun rises from the west”
We also denote truth values in particular ways. “True” may be denoted by T. “False” may be denoted by F. When a proposition (or proposition variable) is known to always be true, we can replace it by T. When a proposition (or proposition variable) is known to always be false, we can replace it by F.
Connectives
We can combine propositions (and propositional variables) into compound propositions or propositional formulas. This is akin to compound sentences and other logical connectives in natural language.
In propositional logic, we have 5 main connectives. Each connective has a corresponding meaning in natural language as we will soon see.
Negation: ¬
Conjunction: ∧
Disjunction: ∨
Implication: →
Biconditional: ↔
Logical connectives are like arithmetic operators (+,−,×,÷).
Negation
The negation of a proposition results in a proposition with the opposite truth value. It is akin to adding “not” into a sentence, or starting a sentence with “it is not that case that…”.
Given a proposition p its negation is ¬p and has the following truth values.
Table 1.1 Negation truth table
p
¬p
F
T
T
F
Negation
Let p:= “the sky is blue”.
¬p is “the sky is not blue” or “it is not the case that the sky is blue”.
Let q:= “2+2=5”.
¬q is “2+2≠5.
Notice in these examples that negation does not necessarily make a proposition false. Rather, it makes the proposition have the opposite truth value.
Conjunction
The conjunction of two propositions is the logical “and” of the two propositions. The conjunction of two proposition is only true if both the propositions are individually true, otherwise the conjunction is false.
Given proposition p and q their conjunction is denoted p∧q and has the following truth values.
Table 1.2 Conjunction truth table
p
q
p∧q
F
F
F
F
T
F
T
F
F
T
T
T
Conjunction
Let p be “birds lay eggs” and q be “my eyes are blue”. p∧q is then “birds lay eggs and my eyes are blue”.
Disjunction
The disjunction of two propositions is the “or” of the two propositions. The disjunction is true if at least one of the propositions is individually true, otherwise the disjunction is false.
Given proposition p and q their disjunction is denoted p∨q and has the following truth values.
Table 1.3 Disjunction truth table
p
q
p∨q
F
F
F
F
T
T
T
F
T
T
T
T
Disjunction
Let p be “it is raining” and q be “I am wearing sunglasses”. p∨q is then “it is raining or I am wearing sunglasses”.
Notice that in this previous example, it is may be true that it is both raining and that I am wearing sunglasses. While that may be silly, p∨q is still true! In logic, we only require that at least one of the propositions in a disjunction is true. That means both are allowed to simultaneously be true.
Caution
In natural language, “or” is often interpreted as an exclusive or.
Language “or”
“You can have a cookie or a piece of cake.” Most people assume that this means you can have a cookie or a piece of cake, but not both.
In logic, “or” is not exclusive. You can have a cookie, a piece of cake, or both!
If you want logical exclusive or, we use the symbol ⊕. However, we will not use that in this course.

Checkpoint
What is the truth value of these compound propositions?
“The earth is round and the sky is blue.”
“Dogs or cats make great pets.”
“It is 20∘ Celsius outside and it is snowing.”
“Lemons are purple or grass is green”
Solution

Implication
Implication is one of the most challenging connectives to understand. Yet it is arguably the most important for creating logical arguments).
An implication is a conditional statement. For two propositions p and q, p→q is an implication which is read “if p, then q”. You can also say “p implies q”.
Implication
Let p be “it is raining” and q be “the ground is wet”. p→q can be read “if it is raining, then the ground is wet”.
In an implication p→q, the first proposition p is known as the hypothesisantecedent, or premise. The second proposition q is known as the conclusion or consequence.
Because an implication is a conditional, the truth value of the implication as a whole changes depending on the truth value of the premise. The following truth table summarizes the truth values of an implication.
Table 1.4 Implication truth table
p
q
p→q
F
F
T
F
T
T
T
F
F
T
T
T
An implication can be viewed as an obligation, a contract, or a commitment. The implication p→q is false (the contract is broken; the obligation is unmet) only when p is true and q is false.
There are several important observations from this truth table about logical implication.
If q is true, then p→q is always true.
If p is true and the implication correct (the obligation is upheld), then q can never be false.
“Falsity can imply anything.” If the hypothesis is false, then the implication is always true, regardless of the whether or not the conclusion is true.
Some of these observations may seem counter-intuitive at first. Let us clarify with some examples.
The truth value of implications
Let p be “that animal is a panda bear” and q be “that animal is black and white”. p→q can be read as “if that animal is a panda bear, then that animal is black and white”.
If p is true, and that animal is indeed a panda bear (and the implication is correct),
then it is also black and white. If q is true, and the animal is black and white, it might be a panda bear, but it might also be a cow.
From p→q, we can say that knowing the animal is a panda bear is sufficient to know that the animal is black and white.
Valid implications can be formed from completely unrelated propositions. Moreover, if you begin with a nonsensical hypothesis, then one can construct valid (but equally nonsensical) implications. Falsity implies anything.
Absurd but valid implications
“If pigs can fly, then I am the pope.”
“If 2+2=5, then lemons are purple.”
“If the sun is made of ice, then my father is Morgan Freeman”.
There are many equivalent ways to think about the implication p→q.
If p, then q
p implies q
q when p
q, if p
q whenever p
q follows from p
p is sufficient for q
q is necessary for p
Necessity and Sufficiency
An implication connects propositions by a necessary or sufficient condition. From p→q we get two relations:
p is sufficient for q
q is necessary for p
That is, “if sufficient condition, then necessary condition”.
Necessary and Sufficient
“If all birds have feathers, then a chicken is a type of bird.”
Knowing birds have feathers is sufficient information to conclude that a chicken is a type of bird. If a chicken is a type of bird, then chickens necessarily have feathers.
Fig. 1.1 Being in the inner circle is sufficient for being in the outer circle. Being in the outer circle is necessary for being in the inner circle.
Biconditional
For two propositions p and q, they can be connected by a biconditional as p↔q.
A biconditional is an double implication. A biconditional is true if both propositions have the same truth value. p↔q can be read as “p if and only if q”. A biconditional has the following truth table.
Table 1.5 Biconditional truth table
p
q
p↔q
F
F
T
F
T
F
T
F
F
T
T
T
The biconditional p↔q can be expressed in many ways:
“p if and only if q”
“if p then q, and if q then p”
“p is necessary and sufficient for q”
“p iff q”
Biconditional
Let p be “2 is an even number”. Let q be “4 is an even number”. p↔q is a biconditional and its truth value is true, since both p and q are true.
Tip (thinking in memes)
“The venn diagram is a circle” exactly means that the two subjects form a biconditional.

Checkpoint
What is the truth value of these compound propositions?
“The Earth is flat” → “Pigeons are robots”
“Bats have wings” → “Bats are birds”
“A square is a rectangle” ↔ “A square had four 90∘ interior angles”
“Spinach is green” ↔ “Penguins can fly”
Solution

Propositional Formulas
In the previous section we saw 5 different logical connectives: ¬, ∧, ∨, →, and ↔. Much like arithmetic formulas using addition, multiplication, division, etc., propositional formulas may use several connectives simultaneously.
Remember BEDMAS or PEDMAS? Now we have “PaNCo DIB” (“Panko Dib”)?
For logical connectives we have a similar order of precedence.
Parenthesis: always perform operations on expressions inside parentheses first.
Negation: apply negation to a proposition before binary connectives.
Conjunction: conjunction before disjunction
Disjunction: disjunction after conjunction, but before implication
Implication: → after ∧, ∨
Biconditional: ↔ after ∧,∨,→.
Logical order of precendence
p∨q→¬r   is the same as   (p∨q)→(¬r)
p∨¬q∧r   is the same as   p∨( (¬q) ∧r)
Propositional variables need not be associated with a particular proposition or truth value. A propositional variable could be just that: a variable. Replacing the variables in a propositional formula with a truth value is called a truth assignment.
Definition (truth assignment)
truth assignment is the assignment of a truth value (true or false) to a propositional variable. Equally, it is the replacement of a propositional variable with a truth value.
Much like logical connectives, propositional formulas will result in different truth values depending on the particular truth assignment on its consituent propositional variables. When at least one truth assignment exists so that a formula is true, that formula is said to be satisfiable.
Definition (satisfiable)
A propositional formula is satisfiable if its truth value can be true under some truth assignment. If every possible truth assignment makes the formula have false as its truth value, that formula is said to be unsatisfiable.
In order to determine the truth value of a propositional formula, and to determine if it is satisfiable, we can create a truth table.

Truth Tables
Truth tables are tools for determining the truth values of propositional formulas.
The table is separated into two sets of columns:
The first set of columns represent each proposition (or propositional variable) in a formula.
The second set of columns represents the sub-formulas and formulas whose truth values are to be determined.
There must be one row in the table for every possible combination of truth values of the propositional variables. For example, in a formula with two variables, the possible combinations are: (T,T),(T,F),(F,T),(F,F).
3-variable truth table
Let p,q,r be propositional variables. A truth table for the formula (p∧q)∨r is:
p
q
r
p∧q
(p∧q)∨r
F
F
F
F
F
F
F
T
F
T
F
T
F
F
F
F
T
T
F
T
T
F
F
F
F
T
F
T
F
T
T
T
F
T
T
T
T
T
T
T
Notice that every possible combination of truth values for p, q, and r is contained in this table. Since at least one choice of truth value for p, q, and r results in the formula being true, then this formula is satisfiable.
In a truth table, you begin by filling out the columns corresponding to each propositional variable. These columns represent every possible combination of truth values on those variables. Then, you add columns for each sub-formula, one at a time, building up to the final formula.
Consider the formula p∧q∧r ∨ ¬q∧r→p. By order of precendence, this is equal to ( (p∧q∧r) ∨ ((¬q)∧r) )→p This contains several sub-formulas which we can parse:
¬q
¬q∧r
p∧q
(p∧q)∧r
(p∧q∧r)∨(¬q∧r)
( (p∧q∧r)∨(¬q∧r) )→p
To be as explicit as possible, we could create a truth table with 3 + 6 = 9 columns (3 variables, 6 sub-formulas). But this is excessive. For example, we could directly compute (¬q∧r) and (p∧q∧r). This gives the following truth table.
A large truth table
A truth table for the propositional formula p∧q∧r ∨ ¬q∧r→p.
p
q
r
p∧q∧r
¬q∧r
(p∧q∧r)∨(¬q∧r)
(p∧q∧r)∨(¬q∧r)→p
F
F
F
F
F
F
T
F
F
T
F
T
T
F
F
T
F
F
F
F
T
F
T
T
F
F
F
T
T
F
F
F
F
F
T
T
F
T
F
T
T
T
T
T
F
F
F
F
T
T
T
T
T
F
T
T

Checkpoint
Construct a truth table
Give a truth table for the propositional formula p∧r→q∨¬r
Solution

Implication, Inverse, Converse, and Contrapositive
Now that we have seen propositional formulas and truth tables, let’s revisit implications. This connective has many related conditionals.
Consider the propositional formula p→q. Then, we have:
Converse: q→p
Inverse: ¬p→¬q
Contrapositive: ¬q→¬p
A conditional and its inverse
The proposition “if it is raining, then I wear a jacket” is a conditional statement. Its inverse is “if it is not raining I do not wear a jacket”.
Notice from this previous example than an implication and its inverse are not exactly the same. If the conditional “if it is raining, then I wear a jacket” is true, that is not the same as its inverse. Indeed, you might still wear a jacket even if its not raining. Maybe you’re just cold.
Important
An implication is not equivalent to its converse or inverse. However, it is equivalent to its contrapositive.

 Logical laws are similar to algebraic laws. For example, there is a logical law corresponding to the associative law of addition, a+(b+c)=(a+b)+c.a+(b+c)=(a+b)+c. In fact, associativity of both conjunction and disjunction are among the laws of logic. Notice that with one exception, the laws are paired in such a way that exchanging the symbols ∧,∧, ∨,∨, 1 and 0 for ∨,∨, ∧,∧, 0, and 1, respectively, in any law gives you a second law. For example, p∨0⇔pp∨0⇔p results in p∧1⇔p.p∧1⇔p. This is called a duality principle. For now, think of it as a way of remembering two laws for the price of one. We will leave it to the reader to verify a few of these laws with truth tables. However, the reader should be careful in applying duality to the conditional operator and implication since the dual involves taking the converse. For example, the dual of p∧q⇒pp∧q⇒p is p∨q⇐p,p∨q⇐p, which is usually written p⇒p∨q.p⇒p∨q.
Example : Verification of an Identity Law
The Identity Law can be verified with this truth table. The fact that (p∧1)↔p(p∧1)↔p is a tautology serves as a valid proof.
Table 3.4.13.4.1: Truth table to demonstrate the identity law for conjunction.
pp
11
p∧1p∧1
(p∧1)↔p(p∧1)↔p
00
11
00
11
11
11
11
11
Some of the logical laws in Table 3.4.33.4.3 might be less obvious to you. For any that you are not comfortable with, substitute actual propositions for the logical variables. For example, if pp is “John owns a pet store” and qq is “John likes pets,” the detachment law should make sense.
Table 3.4.23.4.2: Basic Logical Laws – Equivalences
Commutative Laws
p∨q⇔q∨pp∨q⇔q∨p
p∧q⇔q∧pp∧q⇔q∧p
Associative Laws
(p∨q)∨r⇔p∨(q∨r)(p∨q)∨r⇔p∨(q∨r)
(p∧q)∧r⇔p∧(q∧r)(p∧q)∧r⇔p∧(q∧r)
Distributive Laws
p∧(q∨r)⇔(p∧q)∨(p∧r)p∧(q∨r)⇔(p∧q)∨(p∧r)
p∨(q∧r)⇔(p∨q)∧(p∨r)p∨(q∧r)⇔(p∨q)∧(p∨r)
Identity Laws
p∨0⇔pp∨0⇔p
p∧1⇔pp∧1⇔p
Negation Laws
p∧¬p⇔0p∧¬p⇔0
p∨¬p⇔1p∨¬p⇔1
Idempotent Laws
p∨p⇔p∨p⇔
p∧p⇔pp∧p⇔p
Null Laws
p∧0⇔0p∧0⇔0
p∨1⇔1p∨1⇔1
Absorption Laws
p∧(p∨q)⇔pp∧(p∨q)⇔p
p∨(p∧q)⇔pp∨(p∧q)⇔p
DeMorgan’s Laws
¬(p∨q)⇔(¬p)∧(¬q)¬(p∨q)⇔(¬p)∧(¬q)
¬(p∧q)⇔(¬p)∨(¬q)¬(p∧q)⇔(¬p)∨(¬q)
Involution Laws
¬(¬p)⇔p¬(¬p)⇔p
Table 3.4.33.4.3: Basic Logical Laws – Common Implications and Equivalences
Detachment (AKA Modus Ponens)
(p→q)∧p⇒q(p→q)∧p⇒q
Indirect Reasoning (AKA Modus Tollens)
(p→q)∧¬q⇒¬p(p→q)∧¬q⇒¬p
Disjunctive Addition
p⇒(p∨q)p⇒(p∨q)
Conjunctive Simplification
(p∧q)⇒p(p∧q)⇒p and (p∧q)⇒q(p∧q)⇒q
Disjunctive Simplification
(p∨q)∧¬p⇒q(p∨q)∧¬p⇒q and (p∨q)∧¬q⇒p(p∨q)∧¬q⇒p
Chain Rule
(p→q)∧(q→r)⇒(p→r)(p→q)∧(q→r)⇒(p→r)
Conditional Equivalence
p→q⇔¬p∨qp→q⇔¬p∨q
Biconditional Equivalences
(p↔q)⇔(p→q)∧(q→p)⇔(p∧q)∨(¬p∧¬q)(p↔q)⇔(p→q)∧(q→p)⇔(p∧q)∨(¬p∧¬q)
Contrapositive
(p→q)⇔(¬q→¬p)
Lambda
Function terms, called lambda abstractions, are literal expressions that represent mathematical functions. Yes, you can and should now think of functions as being values, too. Function definitions are terms in predicate logic and in functional programming languages. As we will see later on, we can pass functions as arguments to other functions, and receive them as results. Functions that take functions as arguments or that return functions as results are called higher-order functions. We will get to this topic later on.
Consider the simple lambda expression, . It’s a term that represents a function that takes one argument, n, of type, nat. When applied to an actual parameter, or argument, it returns the value of that argument plus one.
Here’s the example in Lean. It first shows that the literal function expression reduces to the value that it represents directly. It then shows that this function can be applied to an actual parameter, i.e., an argument, 5, reducing to the value 6. Third, it shows that a literal function term can be bound to an identifier, here f, and finally that this makes it easier to write code to apply the function to an argument.
#reduce (λ n : ℕ, n + 1)
#eval (λ n : ℕ, n + 1) 5
def f := (λ n : ℕ, n + 1)
#eval f 5
Lambda calculus terms can be viewed as a kind of binary tree. A lambda calculus term consists of:
Variables, which we can think of as leaf nodes holding strings.
Applications, which we can think of as internal nodes.
Lambda abstractions, which we can think of as a special kind of internal node whose left child must be a variable. (Or as a internal node labeled with a variable with exactly one child.)
It’s slightly annoying to have to define a helper procedure add-three just so we can use it as the argument to every. We’re never going to use that procedure again, but we still have to come up with a name for it. We’d like a general way to say “here’s the function I want you to use” without having to give the procedure a name. In other words, we want a general-purpose procedure-generating procedure!
Lambda is the name of a special form that generates procedures. It takes some information about the function you want to create as arguments and it returns the procedure. It’ll be easier to explain the details after you see an example.
(define (add-three-to-each sent)
  (every (lambda (number) (+ number 3)) sent))
> (add-three-to-each ‘(1 9 9 2))
(4 12 12 5)
The first argument to every is, in effect, the same procedure as the one we called add-three earlier, but now we can use it without giving it a name. (Don’t make the mistake of thinking that lambda is the argument to every. The argument is the procedure returned by lambda.)
Perhaps you’re wondering whether “lambda” spells something backward. Actually, it’s the name of the Greek letter L, which looks like this: λ. It would probably be more sensible if lambda were named something like make-procedure, but the name lambda is traditional.[1]
Creating a procedure by using lambda is very much like creating one with define, as we’ve done up to this point, except that we don’t specify a name. When we create a procedure with define, we have to indicate the procedure’s name, the names of its arguments (i.e., the formal parameters), and the expression that it computes (its body). With lambda we still provide the last two of these three components.
As we said, lambda is a special form. This means, as you remember, that its arguments are not evaluated when you invoke it. The first argument is a sentence containing the formal parameters; the second argument is the body. What lambda returns is an unnamed procedure. You can invoke that procedure:
> ((lambda (a b) (+ (* 2 a) b)) 5 6)
16
> ((lambda (wd) (word (last wd) (first wd))) ‘impish)
It’s slightly annoying to have to define a helper procedure add-three just so we can use it as the argument to every. We’re never going to use that procedure again, but we still have to come up with a name for it. We’d like a general way to say “here’s the function I want you to use” without having to give the procedure a name. In other words, we want a general-purpose procedure-generating procedure!
Lambda is the name of a special form that generates procedures. It takes some information about the function you want to create as arguments and it returns the procedure. It’ll be easier to explain the details after you see an example.
(define (add-three-to-each sent)
  (every (lambda (number) (+ number 3)) sent))
> (add-three-to-each ‘(1 9 9 2))
(4 12 12 5)
The first argument to every is, in effect, the same procedure as the one we called add-three earlier, but now we can use it without giving it a name. (Don’t make the mistake of thinking that lambda is the argument to every. The argument is the procedure returned by lambda.)
Perhaps you’re wondering whether “lambda” spells something backward. Actually, it’s the name of the Greek letter L, which looks like this: λ. It would probably be more sensible if lambda were named something like make-procedure, but the name lambda is traditional.[1]
Creating a procedure by using lambda is very much like creating one with define, as we’ve done up to this point, except that we don’t specify a name. When we create a procedure with define, we have to indicate the procedure’s name, the names of its arguments (i.e., the formal parameters), and the expression that it computes (its body). With lambda we still provide the last two of these three components.
As we said, lambda is a special form. This means, as you remember, that its arguments are not evaluated when you invoke it. The first argument is a sentence containing the formal parameters; the second argument is the body. What lambda returns is an unnamed procedure. You can invoke that procedure:
> ((lambda (a b) (+ (* 2 a) b)) 5 6)
> ((lambda (wd) (word (last wd) (first wd))) ‘impish)
Searching algorithms are used to find a specified element within a data structure. For example, a searching algorithm could be used to find the name “Alan Turing” in an array of names. Numerous different searching algorithms exist, each of which is suited to a particular data structure of format of data. Different searching algorithms are used depending on each individual scenario. Binary Search The binary search algorithm can only be applied on sorted data and works by finding the middle element in a list of data before deciding which side of the data the desired element is to be found in. The unwanted half of the data is then discarded and the process repeated until the desired element is found or until it is known that the desired element doesn’t exist in the data.
 Pseudocode for binary search is shown below. A ​ = Array of data x ​ = Desired element low = 0  high = A.length -1  while low <= high:  mid = (low + high) / 2  if A[mid] == x:  return mid  else if
A[mid] > x:  high = mid -1  else:  low = mid + 1  endif  endwhile  return
 “Not found in data”  With each iteration of binary search, half of the input data is discarded, making the algorithm very efficient. In fact, the time complexity of binary search is O(log n)​ .
www.pmt.education Example 1 Find the location of “Dylan” in the data below.
 0  Alice
1 Bob
2  Charlie
3 Dylan
5 Ellie
 6  Franz
Gabbie Hugo Ingrid To start with, our values for high and low and 8 and 0 respectively. The first step is to find the middle position.
 In this case, it’s (0 + 8) / 2 = ​4​ . Next we inspect the data in position 4: Ellie. This is higher than the desired data and so we discard elements 4-8, setting high as 3. 0  Alice 1  2  3  4  5  6  7  8  Bob Charlie Dylan Ellie Franz Gabbie Hugo Ingrid Again, we calculate the value of the middle position.
This time it’s (0 + 3) / 2 = ​2 (We have to round to the nearest whole number). Inspecting the data at this position we find Charlie, which is lower than the. This breaks the condition of low being less than or equal to high, and so breaks the while loop in the pseudocode. The algorithm then returns “Not found in data” before terminating. Example 3 Look at how the algorithm finds the letter R in the first 20 characters of the alphabet. It’s clear from this example that the algorithm halves the remaining data to be searched with each iteration, gradually reducing the size of the problem to be solved. A B C D E F G H I J K L M N O P Q R S T  A B C D E F G H I J K L M N O P Q R S T  A B C D E F G H I J K L M N O P Q R S T  A B C D E F G H I J K L M N O P Q R S T 
.pmt.education
Linear Search Linear search is the most basic searching algorithm. You can think of it as going along a bookshelf one by one until you come across the book you’re looking for. Sometimes the algorithm gets lucky and finds the desired element almost immediately, while in other situations, the algorithm is incredibly inefficient.
 It’s time complexity is O(n)​ . There’s a lot of pot luck involved with linear search, but it’s incredibly easy to implement. Unlike binary search, linear search doesn’t require the data to be sorted. A ​ = Array of data x ​ = Desired element i = 0  while i < A.length:  if A[i] == x:  return i  else:  i = i + 1  endif  endwhile  return “Not found in data”  Example 1
 Find the position of Apple in the data. 0  Banana
1  Orange
2  3  4  Apple
Kiwi First we inspect position 0,
 and find Banana.
Not the element we’re after.
0  1  2  3  Mango
 4  Banana
Orange
 Apple
 Kiwi
Next we inspect position 1, finding Orange.
Again, not what we’re looking for. 0  1  2  3 
www.pmt.education Example 2 Look at how this algorithm finds the letter R in the first 20 characters of the alphabet and compare it to binary search above. It’s clear from this example that the algorithm is much less efficient than binary search, particularly when the search value is towards the end of the data to be searched.
A B C D E F G H I J K L M N O P Q R S T
 A B C D E F G H I J K L M N O P Q R S T
A B C D E F G H I J K L M N O P Q R S T
A B C D E F G H I J K L M N O P Q R S T
A B C D E F G H I J K L M N O P Q R S T
A B C D E F G H I J K L M N O P Q R S T
 A B C D E F G H I J K L M N O P Q R S T
 A B C D E F G H I J K L M N O P Q R S T
 A B C D E F G H I J K L M N O P Q R S T
A B C D E F G H I J K L M N O P Q R S T
A B C D E F G H I J K L M N O P Q R S T
 A B C D E F G H I J K L M N O P Q R S T
 A B C D E F G H I J K L M N O P Q R S T
A B C D E F G H I J K L M N O P Q R S T
 A B C D E F G H I J K L M N O P Q R S T
 A B C D E F G H I J K L M N O P Q R S T
A B C D E F G H I J K L M N O P Q R S T A B C D E F G H I J K L M N O P Q
Conclusion:
While we note that this is an aspect of discrete mathematics that would benefit from more systematic study and research, this accessibility has come through in some research studies, but not as an explicit focus of the study. Some of the research on the teaching and learning of discrete mathematics with younger students highlights not only the accessibility of topics but that this accessibility can help students make sense of the current curriculum. For example, iterative problems and difference equations can help students learn algebra (Amit & Neria, 2008; Blanton & Kaput, 2005; Carraher et al., 2008; Radford, 2008; Rivera & Becker, 2008; Sandefur et al., 2018; Steele, 2008; Yeap & Kaur, 2008). Even very young students can reason about combinatorial problems in meaningful ways (de Beer et al., 2015; Maher et al., 2011). English (1991, 1993) reports on young children’s strategies as they engage with combinatorial problems. As another example, students can naturally `invent’ graph theory to solve a problem (Ferrarello & Mammana, 2018; Greefrath et al., 2022; van den Heuvel & Krabbendam, 1991).
We can only wonder how much better would the students’ work be if they already knew some graph theory or had previous experience with counting or recursive problems? For many topics in discrete mathematics, students ranging from young children to undergraduate students can be posed similar questions and have a reasonable chance at Investigating the problem at their different levels.
This results in self differentiating tasks that allow individual approaches to the problem (Ostkirchen & Greefrath, 2022). For example, how many 2-color towers can I make of height 5, can be extended to more complicated problems for older students by increasing the number of colors and the height of the tower. Maher et al. (2011) describe the use of combinatorial problems in such contexts among students in a longitudinal study. Students as young as the third grade can investigate recursive structures they build with toothpicks and stickers while high school students can develop recursive models of bacteria growth and the spread of epidemics, which is a simplified version of models studied by epidemiologists (Radford, 2008; Sandefur & Manaster, 2022; Yeap & Kaur, 2008).
This highlights what we mean by accessibility – students can have access to mathematical topics and ideas regardless of background and prerequisite knowledge (DeBellis & Rosenstein, 2004; Ferrarello & Mammana, 2018). Although we have several examples of empirical research that implicitly demonstrates the accessibility of discrete mathematics and the value of this accessibility, we note that there is also more work to be done. There is a need for the field to focus on the issue of accessibility more systematically and explicitly.
Part II
Computational Thinking at first glance – What, why and how
1.1. Definition of Computational Thinking (CT) Is that a fact? There is still no universally accepted definition of “Computational Thinking”. The concept of computational thinking (CT) was first introduced by an educationalist Seymour Papert in 1967 talking about LOGO, the programming language he developed at MIT (Massachusetts Institute of Technology) to teach programming to children. He was convinced that the use of computers could foster formal thinking in children and, in particular, could allow children to autonomously “construct” their learning and thinking. The concept of CT was then revitalized in 2006 by a computer scientist Jeannette M. Wing who, in the article “Computational Thinking”, argued that it addresses the conundrum of machine intelligence by asking what machines do better than man and what man does better than machines. Wing argues that computational thinking is not simply a procedural coding activity, but is a basic conceptual skill that, along with reading, writing and arithmetic, should be taught to all children. It appears that computational thinking purports to be critical thinking in evaluating situations and an advanced problem-solving ability using computerized tools. If computer science is the science of what can be computerized and how to computerize it, however, computational thinking is not a skill unique to computer scientists. It allows problems to be solved, a system to be designed and human behaviour to be understood in everyday life, in an alternative way, through the fundamental concepts of information technology.
Key Skills for Computational Thinking There are four key skills in computational thinking:
 1 Decomposition
2 Pattern Recognition
3 Pattern Abstraction
4 Algorithm Design
 1) Decomposition Breaking down big and difficult problems into something much simpler. Often big problems are just many little problems put together. Decomposition is an important life skill to be relied on in the future when students and adults need to take on larger tasks. Students will learn ways to delegate group projects and build time management skills
 2) Pattern Recognition Sometimes when a problem is made up of many small bits, you will notice that these bits have something in common. If they do not, they could, however, have strong similarities with the pieces of another problem that has already been solved. If you are able to find these regularities, it will become a lot easier to identify the individual pieces: pattern recognition is simply looking for patterns in the puzzles and determining if any of the problems or solutions we encountered in the past may apply to a present situation. May, what we learned in the past, help us sort out the actual problem? If you have ever built a piece of IKEA furniture, you will understand the importance of patterns. While assembling an IKEA drawer unit, it is likely to take you much longer to assemble the first drawer than the fourth or fifth. When we repeat steps in our assembling process we learn how to solve the instructions more quickly and learn from our mistakes. The painstaking process of assembling that first part teaches us the skills to perform the process more efficiently in the future.
3) Pattern Abstraction Once you have located a pattern, it is possible to abstract (ignore) the details that differentiate the various things and use general techniques for finding solutions that work for more than one problem. Identifying the crucial information in a problem and disregarding the irrelevant information is one of the hardest parts of computational learning.
 4) Algorithm design When the solution is ready, it is possible to write it down so it can be executed step by step. This makes easier to obtain the expected results. Algorithm design is setting out the steps and rules needed to follow in order to achieve the same desired outcome every time.
Concepts of computational thinking Computational thinking is a cognitive or thought process involving logical reasoning by which problems are solved and artefacts, procedures and systems are better understood. It embraces:
● the ability to think algorithmically;
● the ability to think in terms of decomposition;
 ● the ability to think in generalisations, identifying and making use of patterns;
 ● the ability to think in abstractions, choosing good representations; and
 ● the ability to think in terms of evaluation. Computational thinking skills enable pupils to access parts of the Computing subject content. Importantly, they relate to thinking skills and problem solving across the whole curriculum and through life in general. Computational thinking can be applied to a wide range of artefacts including: systems, processes, objects, algorithms, problems, solutions, abstractions, and collections of data or information. In the following discussion of concepts, artefact refers to any of these. Logical reasoning Logical reasoning enables pupils to make sense of things by analysing and checking facts through thinking clearly and precisely. It allows pupils to draw on their own knowledge and internal models to make and verify predictions and to draw conclusions. It is used extensively by pupils when they test, debug, and correct algorithms. Logical reasoning is the novel application of the other computational thinking concepts to solve problems.
Design and technology pupils, designing a model of a truck, choose materials for different elements of a project. They are employing generalisation when they recognise that the properties of a material used in one situation make it suitable to use in another completely different context. Being able to divide the new project into different parts, requiring different materials, is an example of decomposition. The pupil is using logical reasoning to design a truck. Pupils use logical reasoning when learning about gravity using a weighted string suspended from the lid of a glass jar. Before tilting the jar, pupils can make predictions about the behaviour of the weighted string. They can then evaluate the results of their tests. They may be able to generalise the behaviour to other situations such as a crane. The novel use in understanding a property of gravity is logical reasoning. Logical reasoning is key in allowing pupils to debug their code. They can work with peers to evaluate each other’s code, to isolate bugs, and to suggest fixes. During this process, they may have opportunities to employ abstraction, evaluation, and algorithmic design. The novel use in correcting mistakes in code requires logical reasoning.
 Abstraction in the Computer Science Classroom
Although we have presented relevant characterisations of abstraction, it is still far from clear how an abstraction-oriented perspective could become part of the pedagogical practice. Already in the late 1990s, as a revision of the spreading object-first orientaTable 1
 PGK Hierarchy levels from Perrenet et al. (2005) and their mapping to K-5 settings according to Waite et al. (2018). PGK Level Definition K-5 name K-5 question Problem Algorithm perceived as a problem solving strategy problem “What is needed” Object (algorithm) Algorithm understood independently of any specific implementation design “What it should do” Program Algorithmic grasp of the program code “How it is done” Execution Focus on individual runs with specific inputs running the code “What it does” 630 C. Mirolo et al. tion, Machanick (1998) endorsed an abstraction-first instructional approach where the implementation of abstract data types is delayed as much as possible in order to stress an abstract view of the models.
Kramer remarked that abstraction per se is not the subject of any computing course, but that all computing courses “rely on or utilize abstraction to explain, model, specify, reason or solve problems,” so confirming that “abstraction is an essential aspect of computing, but that it must be taught indirectly through other topics” (Kramer, 2007, p. 41). In line with Kramer’s remark, Hazzan (2008) discussed abstraction as a soft idea, “that can be neither rigidly nor formally defined, nor is it possible to guide students as to its precise application.” And although “it is not a trivial matter,” like other soft ideas, abstraction should be taught in a computer science curriculum.
Then, a small number of educators have provided guidelines to teach abstraction at different instruction levels. Hence, this section briefly explores their approaches to foster and assess abstraction skills. 5.1. Teaching to Trigger Abstraction in Computer Science Often instructors aim to develop students’ abstraction skills indirectly, by devising particular learning trajectories that are supposed to foster higher-level thinking and require students to use abstraction to succeed. In a program development project, for example, they could assign refactoring tasks in which learners are asked to look for recurrent patterns of code and to re-organise the code by introducing meaningful procedural and/or data abstractions with the purpose of making the whole program easier to read, debug and modify. In the following paragraphs we will outline a selection of representative approaches to (an implicit) abstraction-oriented instruction. Pattern-oriented instruction. This approach has the aim of improving students’ competencies in algorithmic problem solving (Muller and Haberman, 2008).
An algorithm is indeed seen by these authors as a combination of plan patterns in Soloway’s sense (Soloway, 1986), resulting via sequencing, nesting or merging plans from a repertory of basic algorithmic patterns specifically designed for pedagogical purposes. In Muller and Haberman’s scenario, abstraction plays a crucial role in pattern recognition, chunking, and problem structure identification. Their approach relies on having an appropriate pattern repository, as well as on presenting carefully selected problems of gradually increasing difficulty; teachers should then discuss and compare different solutions to a given problem in terms of pattern composition. Additional guidelines for pattern-oriented instruction include:
(1) patterns should be abstracted from related examples or by generalising a simpler problem,
(2) patterns should be revisited in different contexts, in order to make the identification of common problem features easier, and (3) similarities, differences, and also possible misuses of patterns should be considered. According to Muller and Haberman, comparative studies appear to show that novices exposed to this approach develop enhanced problem solving abilities. Multiple representations perspective. Dealing with multiple representations of a given phenomenon can play a key role in the development of abstract concepts. Ac- cording to Ainsworth (2008), in particular, in order “to construct a deeper understanding of a domain,” if the learners “fail to relate representations, then processes like abstraction cannot occur. Moreover, although learners find it difficult to relate different forms of representations, if the representations are too similar, then abstraction is also unlikely to occur.” She then recommends that teachers should foster abstraction over multiple representations “by providing focused help and support on how to relate representations and giving learners sufficient time to master this process.” In this respect, Gautam et al. (2020) have recently proposed an interesting interdisciplinary approach to integrate science (namely, chemistry) and computational thinking in the curriculum. While abstraction is usually “presented as hierarchical” in terms of (i) extracting important features and ignoring unimportant ones, and (ii) finding commonalities across contexts, in their standpoint “abstraction in science” as well as in computing “requires students to move laterally across different representations of the concepts or actions.” In the reported study, the micro-level process of photosynthesis was modeled by a code snippet, and by discussing commonalities and differences between, e.g., a whiteboard and the code representation of the implied chemical reaction, “the instructor pushed students towards higher-level abstract thinking.” Moreover, they suggest to allow for friction emerging when the students explore different representations, in that it encourages to consider alternative views and “negotiate the elements with one another.” According to the authors, this approach “created meaningful accounts of science phenomenon and the science provided access to how computation embeds ideas.” Exploration of artefacts.
 A more recent pedagogical trend in programming education attempts to trigger abstraction through activities inspired by the use-modify-create framework. The idea is that the understanding of artefacts such as programs would gradually progress through three major stages, corresponding to
exploration via passive use (as a consumer),
(ii) experimentation of the internal machinery by modifying some features, and finally
(iii) creation of new, original artefacts to achieve specific goals. While discussing the use-modify-create approach, Lee et al. (2014) observe that abstraction, as well as other computational thinking abilities, are “not explicitly taught but rather [develop] through one’s impetus to create;” nevertheless, in this progression the abilities to modify and, later, to create imply the enhancement of learner’s abstraction skills.
This is a course on discrete mathematics as used in Computer Science. It’s only a one-semester course, so there are a lot of topics that it doesn’t cover or doesn’t cover in much depth. But the hope is that this will give you a foundation of skills that you can build on as you need to, and particularly to give you a bit of mathematical maturity—the basic understanding of what mathematics is and how mathematical definitions and proofs work.
So why do I need to learn all this nasty mathematics?
 Why you should know about mathematics, if you are interested in Computer Science: or, more specifically, why you should take CS202 or a comparable course:
• Computation is something that you can’t see and can’t touch, and yet (thanks to the efforts of generations of hardware engineers) it obeys strict, well-defined rules with astonishing accuracy over long periods of time.
• Computations are too big for you to comprehend all at once. Imagine printing out an execution trace that showed every operation a typical $500 desktop computer executed in one (1) second.
If you could read one operation per second, for eight hours every day, you would die of old age before you got halfway through. Now imagine letting the computer run overnight. So in order to understand computations, we need a language that allows us to reason about things we can’t see and can’t touch, that are too big
 
for us to understand, but that nonetheless follow strict, simple, well-defined rules. We’d like our reasoning to be consistent: any two people using the language should (barring errors) obtain the same conclusions from the same information. Computer scientists are good at inventing languages, so we could invent a new one for this particular purpose, but we don’t have to: the exact same problem has been vexing philosophers, theologians, and mathematicians for much longer than computers have been around, and they’ve had a lot of time to think about how to make such a language work.
 Philosophers and theologians are still working on the consistency part, but mathematicians (mostly) got it in the early 20th-century. Because the first virtue of a computer scientist is laziness, we are going to steal their code.
But isn’t math hard? Yes and no. The human brain is not really designed to do formal mathematical reasoning, which is why most mathematics was invented in the last few centuries and why even apparently simple things like learning how to count or add require years of training, usually done at an early age so the pain will be forgotten later. But mathematical reasoning is very close to legal reasoning, which we do seem to be very good at.1 There is very little structural difference between the two sentences: 1. If x is in S, then x + 1 is in S. 2. If x is of royal blood, then x’s child is of royal blood.
 But because the first is about boring numbers and the second is about fascinating social relationships and rules, most people have a much easier time deducing that to show somebody is royal we need to start with some known royal and follow a chain of descendants than they have deducing that to show that some number is in the set S we need to start with some known element of S and show that repeatedly adding 1 gets us to the number we want. And yet to a logician these are the same processes of reasoning. So why is statement
(1) trickier to think about than statement
 (2)? Part of the difference is familiarity—we are all taught from an early age what it means to be somebody’s child, to take on a particular social role, etc. For mathematical concepts, this familiarity comes with exposure and practice, just as with learning any other language. But part of the difference is that 1For a description of some classic experiments that demonstrate this, see http://
Foundations and logic Why: This is the assembly language of mathematics—the stuff at the bottom that everything else compiles to.
 • Propositional logic.
 • Predicate logic.
 • Axioms, theories, and models.
• Proofs.
• Induction and recursion
 
English Language Arts
To Critical Thinking, the critical person is something like a critical consumer of information; he or she is driven to seek reasons and evidence. Part of this is a matter of mastering certain skills of thought: learning to diagnose invalid forms of argument, knowing how to make and defend distinctions, and so on. Much of the literature in this area, especially early on, seemed to be devoted to lists and taxonomies of what a “critical thinker” should know and be able to do (Ennis 1962, 1980). More recently, however, various authors in this tradition have come to recognize that teaching content and skills is of minor import if learners do not also develop the dispositions or inclination to look at the world through a critical lens. By this, Critical Thinking means that the critical person has not only the capacity (the skills) to seek reasons, truth, and evidence, but also that he or she has the drive (disposition) to seek them. For instance, Ennis claims that a critical person not only should seek reasons and try to be well informed, but that he or she should have a tendency to do such things (Ennis 1987, 1996). Siegel criticizes Ennis somewhat for seeing dispositions simply as what animates the skills of critical thinking, because this fails to distinguish sufficiently the critical thinker from critical thinking. For Siegel, a cluster of dispositions (the “critical spirit”) is more like a deep-seated character trait, something like Scheffler’s notion of “a love of truth and a contempt of lying” (Siegel 1988; Scheffler 1991). It is part of critical thinking itself. Paul also stresses this distinction between skills and dispositions in his distinction between “weak-sense” and “strong-sense” critical thinking. For Paul, the “weak-sense” means that one has learned the skills and can demonstrate them when asked to do so; the “strong-sense” means that one has incorporated these skills into a way of living in which one’s own assumptions are re-examined and questioned as well. According to Paul, a critical thinker in the “strong sense” has a passionate drive for “clarity, accuracy, and fairmindedness” (Paul 1983, 23; see also Paul 1994). This dispositional view of critical thinking has real advantages over the skills-only view. But in important respects it is still limited. First, it is not clear exactly what is entailed by making such dispositions part of critical thinking. In our view it not only broadens the notion of criticality beyond mere “logicality,” but it necessarily requires a greater attention to institutional contexts and social relations than Critical Thinking authors have provided. Both the skills-based view and the skills-plus-dispositions view are still focused on the individual person. But it is only in the context
A second theme in the Critical Thinking literature has been the extent to which critical thinking can be characterized as a set of generalized abilities and dispositions, as opposed to content-specific abilities and dispositions that are learned and expressed differently in different areas of investigation. Can a general “Critical Thinking” course develop abilities and dispositions that will then be applied in any of a range of fields; or should such material be presented specifically in connection to the questions and content of particular fields of study? Is a scientist who is a critical thinker doing the same things as an historian who is a critical thinker? When each evaluates “good evidence,” are they truly thinking about problems in similar ways, or are the differences in interpretation and application dominant? This debate has set John McPeck, the chief advocate of content-specificity, in opposition to a number of other theorists in this area (Norris 1992; Talaska 1992). This issue relates not only to the question of how we might teach critical thinking, but also to how and whether one can test for a general facility in critical thinking (Ennis 1984). A third debate has addressed the question of the degree to which the standards of critical thinking, and the conception of rationality that underlies them, are culturally biased in favor of a particular masculine and/or Western mode of thinking, one that implicitly devalues other “ways of knowing.” Theories of education that stress the primary importance of logic, conceptual clarity, and rigorous adherence to scientific evidence have been challenged by various advocates of cultural and gender diversity who emphasize respect for alternative world views and styles of reasoning. Partly in response to such criticisms, Richard Paul has developed a conception of critical thinking that regards “sociocentrism” as itself a sign of flawed thinking (Paul 1994). Paul believes that, because critical thinking allows us to overcome the sway of our egocentric and sociocentric beliefs, it is “essential to our role as moral agents and as potential shapers of our own nature and destiny”(Paul 1990, 67). For Paul, and for some other Critical Thinking authors as well, part of the method of critical thinking involves fostering dialogue, in which thinking from the perspective of others is also relevant to the assessment of truth claims; a too-hasty imposition of one’s own standards of evidence might result not only in a premature rejection of credible alternative points of view, but might also have the effect of silencing the voices of those who (in the present context) need to be encouraged as much as possible to speak for themselves. In this respect, we see Paul introducing into the very definition of critical thinking some of the sorts of social and contextual factors that Critical Pedagogy writers have emphasized.
http://mediaeducation.org.mt/wp-content/uploads/2013/05/Critical-Thinking-and-Critical-Pedagogy.pdf
CHAPTER TWO BASIC CONCEPTS OF LOGIC
Chapter Overview Logic, as field of study, may be defined as the organized body of knowledge, or science that evaluates arguments. The aim of logic is to develop a system of methods and principles that we may use as criteria for evaluating the arguments of others and as guides in constructing arguments of our own. Argument is a systematic combination of two or more statements, which are classified as a premise or premises and conclusion. A premise refers to the statement, which is claimed to provide a logical support or evidence to the main point of the argument, which h known as conclusion. A conclusion is a statement, which is claimed to follow from the alleged evidence. Depending on the logical and real ability of the premise(s) to support the conclusion, an argument can be either a good argument or a bad argument. However, unlike all kinds of passages, including those that resemble arguments, all arguments purport to prove something. Arguments can generally be divided into deductive and inductive arguments. A deductive argument is an argument in which the premises are claimed to support the conclusion in such a way that it is impossible for the premises to be true and the conclusion false. On the other hand, an inductive argument is an argument in which the premises are claimed to support the conclusion in such a way that it is improbable that the premises be true and the conclusion false. The deductiveness or inductiveness of an argument can be determined by the particular indicator word it might use, the actual strength of the inferential relationship between its component statements, and its argumentative form or structure. A deductive argument can be evaluated by its validity and soundness. Likewise, an inductive argument can be evaluated by its strength and cogency. Depending on its actually ability to successfully maintain its inferential claim, a deductive argument can be either valid or invalid. That is, if the premise(s) of a certain deductive argument actually support its conclusion in such a way that it is impossible for the premises to be true and the conclusion false, then that particular deductive argument is valid. If, however, its premise(s) actually support its conclusion in such a
way that it is possible for the premises to be true and the conclusion false, then that particular deductive argument is invalid. Similarly, an inductive argument can be either strong or weak, depending on its actually ability to successfully maintain its inferential claim. That is, if the premise(s) of a certain inductive argument actually support its conclusion in such a way that it is improbable for the premises to be true and the conclusion false, then that particular inductive argument is strong. If, however, its premise(s) actually support its conclusion in such a way that it is probable for the premises to be true and the conclusion false, then that particular inductive argument is weak. Furthermore, depending on its actually ability to successfully maintain its inferential claim as well as its factual claim, a deductive argument can be either sound or unsound. That is, if a deductive argument actually maintained its inferential claim, (i.e., if it is valid), and its factual claim, (i.e., if all of its premises are true), then that particular deductive argument will be a sound argument. However, if it fails to maintain either of its claims, it will be an unsound argument. Likewise, depending on its actually ability to successfully maintain its inferential claim as well as its factual claim, an inductive argument can be either cogent or uncogent. That is, if an inductive argument actually maintained its inferential claim, (i.e., if it is strong), and its factual claim, (i.e., if all of its premises are probably true), then that particular inductive argument will be a cogent argument. However, if it fails to maintain either of its claims, it will be an uncogent argument. In this chapter, we will discuss logic and its basic concepts, the techniques of distinguishing arguments from non-argumentative passages, and the types of arguments.
Chapter Objectives: Dear learners, after the successful completion of this chapter, you will be able to:
Ø Understand the meaning and basic concepts of logic;
Ø Understand the meaning, components, and types of arguments; and
Ø Recognize the major techniques of recognizing and evaluating arguments
Lesson 1: Basic Concepts of Logic: Arguments, Premises and Conclusions Lesson Overview Logic is generally be defined as a philosophical science that evaluates arguments. An argument is a systematic combination of one or more than one statements, which are claimed to provide a logical support or evidence (i.e., premise(s) to another single statement which is claimed to follow logically from the alleged evidence (i.e., conclusion). An argument can be either good or bad argument, depending on the logical ability of its premise(s) to support its conclusion. The primary aim of logic is to develop a system of methods and principles that we may use as criteria for evaluating the arguments of others and as guides in constructing arguments of our own. The study of logic increases students‘ confidence to criticize the arguments of others and advance arguments of their own. In this lesson, we will discuss the meaning and basic concepts of logic: arguments, premises, and conclusions. Lesson Objectives: After the accomplishment of this lesson, you will be able to:
Ø Understand the meaning.
Ø Identify the subject matter of logic.
 Ø Understand the meaning of an argument.
Ø Identify the components of an argument.
 Ø Understand the meaning and nature of a premise.
Ø Comprehend the meaning and nature of a conclusion.
Ø Recognize the techniques of identifying the premises and conclusion of an argument.
Conditional Statements
A conditional statement is an ―if . . . then . . .‖ statement.
Example: If you study hard, then you will score „A‟ grade.
 Every conditional statement is made up of two component statements. The component statement immediately following the ―if‖ is called the antecedent (if-clause), and the one following the ―then‖ is called the consequent (then-clause). However, there is an occasion that the order of antecedent and consequent is reversed.
That is, when occasionally the word ‗‗then‘‘ is left out, the order of antecedent and consequent is reversed. For example if we left out ―then‖ from the above example the antecedent and consequent is reversed: You will score „A‟ grade if you study hard. In the above example, the antecedent is ―You study hard,‖ and the consequent is ―
You will score „A‟ grade.‖ In this example, there is a meaningful relationship between antecedent and consequent.
However, such a relationship need not exist for a statement to count as conditional. The statement ―If Getaneh Kebede is a singer, then Hawassa is in Mekelle‖ is just as much a conditional statement as that in the above example.
Conditional statements are not arguments, because they fail to meet the criteria given earlier.
In an argument, at least one statement must claim to present evidence, and there must be a claim that this evidence implies something. In a conditional statement, there is no claim that either the antecedent or the consequent presents evidence. In other words, there is no assertion that either the antecedent or the consequent is true. Rather, there is only the assertion that if the antecedent is true, then so is the consequent.
For example, the above example merely asserts that if you study hard, then you will score ‗A‘. It does not assert that you study hard.
Nor does it assert you scored ‗A‘. Of course, a conditional statement as a whole may present evidence because it asserts a relationship between statements. Yet when conditional statements are taken in this sense, there is still no argument, because there is then no separate claim that this evidence implies anything.
 Therefore, a single conditional statement is not an argument.
The fact that a statement begins with ―if‖ makes it the idea conditional and not a final reasonable assertion.
That is why also conditional statements are not evaluated as true or false without separately evaluating the antecedent and the consequent. They only claim that if the antecedent is true then so is the consequent. However, some conditional statements are similar to arguments in that they express the outcome of a reasoning process. As such, they may be said to have a certain inferential content. Consider the following example: If destroying a political competitor gives you joy, then you have a low sense of morality
https://wcu.edu.et/FirstYearModule/CRITICAL%20THINKING%20module.pdf
Discrete Mathematics
The Conditional Statement Before we give a formal definition of the conditional statement, we start with an example so we can understand when a conditional statement should be true. For the example, we need the following notation and terminology:
 Notation 1.1.
 If p and q are statements, the conditional of q by p is “if p then q” denoted p → q. We call p the hypothesis of the conditional and q the conclusion.
 Example 1.2. Consider the conditional statement, “if I am healthy, I will come to class.” To determine the truth value of this statement, we need to determine when this statement is false, so we consider the four different possibilities for the truth values of p and q.
Let p :=“I am healthy” and q :=“I will come to class”. We shall fill in the following table:
p q p → q T T T T F F F T T F F T
 • For case # 1, if I am healthy and I come to class, the conditional is clearly true.
 • For case # 2, if I am healthy, but I have decided to stay home and not go to class, the conditional is false – the hypothesis is satisfied, but the conclusion is not satisfied, so the statement cannot possibly be true.
• For case # 3, if I am not healthy, but I have come to class anyway though all the people sitting around may not be happy about it, the conditional statement has not been violated since the hypothesis does not hold i.e. the conditional statement is meaningless since the hypothesis is not true. Therefore, the conditional must be true.
 • Likewise, for case # 4, if I am not healthy, and I did not come to class, the conditional statement has not been violated since
the hypothesis does not hold. Therefore, the conditional is true. This example implies that a conditional statement is false only when the hypothesis is true and the conclusion is false. Though it is clear that a conditional statement is false only when the hypothesis is true and the conclusion is false, it is not clear why when the hypothesis is false, the conditional statement is always true. To try to explain why this is this case, we consider another example.
 Example 1.3.
 Consider the mathematical statement “if n is a perfect square, then n is not prime.” Clearly this is a true statement for any n, so it will be true when we substitute values in for n. Now substitute 3 for n: “if 3 is a perfect square, then 3 is not prime.” As remarked above, this conditional statement is still true yet its hypothesis and conclusion are both false. Similarly, if we substitute 6 into this statement, it becomes “if 6 is a perfect square, then 6 is not prime.” This conditional statement is true yet its hypothesis is false and its conclusion is true.
 We can now write down a formal definition for the conditional statement.
 Definition 1.4. If p and q are statements, the conditional of q by p is “if p then q” or “p implies q” denoted p → q. A conditional statement is false only when the hypothesis is false and the conclusion is true. The truth table for the conditional statement is as follows:
p q p → q
T T T T F F
F T T F F T
https://faculty.up.edu/wootton/discrete/section1.2.pdf
Conditional reasoning
Conditional reasoning is based on the construction “if 𝑝, then 𝑞” when the premise is true,
the conclusion will be true. However, this leaves open the question of what happens when
𝑝 is false, which means that, in this case, 𝑞 can logically be either true or false. Studies
are abundant about four main conditional inferences: modus ponens, modus tollens,
affirmation of the consequent and denial of the antecedent. Johnson-Laird and Byrne
(2002) discuss that, among all four conditional inferences mentioned in §§3.1.2, only
modus ponens and modus tollens are valid for the conditional interpretation. The following
is an example of modus ponens:
If it rains, then you get wet.
It rains.
Therefore, you get wet.
https://summit.sfu.ca/_flysystem/fedora/2022-08/input_data/22441/etd21791.pdf
Critics have claimed that mathematics taught in K-11 and K-12 is nothing more than memorizing the facts rather than computing the method of solving the given problem with a known concept of study.
Topic of study which includes discrete mathematics are Set Theory, Relations and Functions, Principles of Mathematical Induction, Permutation and Combinations, Mathematical Reasoning, Probability and some study about Matrices and Determinants.
Discrete Mathematics course is a core part of computer / information science & technology and it facilitates the study of applications in the field of computer science, especially in the areas of data structures, the theory of computer languages and the analysis of algorithms. In addition, this course also provides students with understanding of applications in engineering and the physical and life sciences, as well as in statistics and the social sciences.
 To introduce the student at the high-school level, if not earlier, to the topics and techniques of discrete methods and combinatorial reasoning. Whenever the structures from abstract algebra are required, only the basic theory needed for the application development. Further, the solution of the some applications contribute to the iterative procedures that lead to specific algorithms. The algorithmic approach and solution for the problems is fundamental in discrete mathematics.
Counting concept introduces the basic collection of counting techniques with few motivational examples such as paper folding example, Rubik’s cube problem etc. This provides, count visually distinguishable patterns (Binomial Theorem) for collection of objects with identifiable types of objects, each with several copies are available. Counting the number of distinct elements in a union of possibly non-disjoint sets (inclusion-exclusion formula). Probability theory conceptualize the foundational explanations (event, sample space, independence). Methods of determining the probabilities of events are introduced and the notion of equally likely outcomes are defined. The notion of a random variable is to create a variable whose value is determined by the outcome of a random experiment. Probability distribution described for a particular pattern and a collection of conditional probabilities into a different set of conditional probabilities (Bayes’s Theorem). On higher level, they should be aware of some meta-knowledge and heuristics, and be able to use them appropriately. They should be aware that there are many approaches to achieve the same goal but using the appropriate method of solving the problem and reach the desired result. Influenced by all the examples in discrete mathematics concepts, students shall know it is good to work systematically and in phases, virtually every time when it is possible. Educational targets describes above includes both practical usability and theoretical knowledge. These two aspect shall strength each other systematically, where every student of K-11 and K-12 grade classes efficiently.
 

The post Write up on Discrete Mathematics in an educational Curriculum for grade school and high school students (Part 1 & Part 2) appeared first on DayDreamin’ Comics.

]]>
https://ddcomics.org/2026/06/13/write-up-on-discrete-mathematics-in-an-educational-curriculum-for-grade-school-and-high-school-students-part-1-part-2/feed/ 0 6828
Write up on Discrete Mathematics in an educational Curriculum for grade school and high school students(Part 2) https://ddcomics.org/2026/06/13/write-up-on-discrete-mathematics-in-an-educational-curriculum-for-grade-school-and-high-school-studentspart-2/ https://ddcomics.org/2026/06/13/write-up-on-discrete-mathematics-in-an-educational-curriculum-for-grade-school-and-high-school-studentspart-2/#respond Sat, 13 Jun 2026 06:21:06 +0000 https://ddcomics.org/?p=6823 Part II 1.1. Definition of Computational Thinking (CT) Is that a fact? There is still no universally accepted definition of “Computational Thinking”. The concept of computational thinking (CT) was first introduced by an educationalist Seymour Papert in 1967 talking about LOGO, the programming language he developed at MIT (Massachusetts Institute of Technology) to teach programming […]

The post Write up on Discrete Mathematics in an educational Curriculum for grade school and high school students(Part 2) appeared first on DayDreamin’ Comics.

]]>
Part II

  1. Computational Thinking at first glance – What, why and how

1.1. Definition of Computational Thinking (CT) Is that a fact? There is still no universally accepted definition of “Computational Thinking”. The concept of computational thinking (CT) was first introduced by an educationalist Seymour Papert in 1967 talking about LOGO, the programming language he developed at MIT (Massachusetts Institute of Technology) to teach programming to children. He was convinced that the use of computers could foster formal thinking in children and, in particular, could allow children to autonomously “construct” their learning and thinking. The concept of CT was then revitalized in 2006 by a computer scientist Jeannette M. Wing who, in the article “Computational Thinking”, argued that it addresses the conundrum of machine intelligence by asking what machines do better than man and what man does better than machines. Wing argues that computational thinking is not simply a procedural coding activity, but is a basic conceptual skill that, along with reading, writing and arithmetic, should be taught to all children. It appears that computational thinking purports to be critical thinking in evaluating situations and an advanced problem-solving ability using computerized tools. If computer science is the science of what can be computerized and how to computerize it, however, computational thinking is not a skill unique to computer scientists. It allows problems to be solved, a system to be designed and human behaviour to be understood in everyday life, in an alternative way, through the fundamental concepts of information technology.

Key Skills for Computational Thinking There are four key skills in computational thinking:

 1 Decomposition

2 Pattern Recognition

3 Pattern Abstraction

4 Algorithm Design

 1) Decomposition Breaking down big and difficult problems into something much simpler. Often big problems are just many little problems put together. Decomposition is an important life skill to be relied on in the future when students and adults need to take on larger tasks. Students will learn ways to delegate group projects and build time management skills

 2) Pattern Recognition Sometimes when a problem is made up of many small bits, you will notice that these bits have something in common. If they do not, they could, however, have strong similarities with the pieces of another problem that has already been solved. If you are able to find these regularities, it will become a lot easier to identify the individual pieces: pattern recognition is simply looking for patterns in the puzzles and determining if any of the problems or solutions we encountered in the past may apply to a present situation. May, what we learned in the past, help us sort out the actual problem? If you have ever built a piece of IKEA furniture, you will understand the importance of patterns. While assembling an IKEA drawer unit, it is likely to take you much longer to assemble the first drawer than the fourth or fifth. When we repeat steps in our assembling process we learn how to solve the instructions more quickly and learn from our mistakes. The painstaking process of assembling that first part teaches us the skills to perform the process more efficiently in the future.

3) Pattern Abstraction Once you have located a pattern, it is possible to abstract (ignore) the details that differentiate the various things and use general techniques for finding solutions that work for more than one problem. Identifying the crucial information in a problem and disregarding the irrelevant information is one of the hardest parts of computational learning.

 4) Algorithm design When the solution is ready, it is possible to write it down so it can be executed step by step. This makes easier to obtain the expected results. Algorithm design is setting out the steps and rules needed to follow in order to achieve the same desired outcome every time.

Concepts of computational thinking Computational thinking is a cognitive or thought process involving logical reasoning by which problems are solved and artefacts, procedures and systems are better understood. It embraces:

● the ability to think algorithmically;

● the ability to think in terms of decomposition;

 ● the ability to think in generalisations, identifying and making use of patterns;

 ● the ability to think in abstractions, choosing good representations; and

 ● the ability to think in terms of evaluation. Computational thinking skills enable pupils to access parts of the Computing subject content. Importantly, they relate to thinking skills and problem solving across the whole curriculum and through life in general. Computational thinking can be applied to a wide range of artefacts including: systems, processes, objects, algorithms, problems, solutions, abstractions, and collections of data or information. In the following discussion of concepts, artefact refers to any of these. Logical reasoning Logical reasoning enables pupils to make sense of things by analysing and checking facts through thinking clearly and precisely. It allows pupils to draw on their own knowledge and internal models to make and verify predictions and to draw conclusions. It is used extensively by pupils when they test, debug, and correct algorithms. Logical reasoning is the novel application of the other computational thinking concepts to solve problems.

Design and technology pupils, designing a model of a truck, choose materials for different elements of a project. They are employing generalisation when they recognise that the properties of a material used in one situation make it suitable to use in another completely different context. Being able to divide the new project into different parts, requiring different materials, is an example of decomposition. The pupil is using logical reasoning to design a truck. Pupils use logical reasoning when learning about gravity using a weighted string suspended from the lid of a glass jar. Before tilting the jar, pupils can make predictions about the behaviour of the weighted string. They can then evaluate the results of their tests. They may be able to generalise the behaviour to other situations such as a crane. The novel use in understanding a property of gravity is logical reasoning. Logical reasoning is key in allowing pupils to debug their code. They can work with peers to evaluate each other’s code, to isolate bugs, and to suggest fixes. During this process, they may have opportunities to employ abstraction, evaluation, and algorithmic design. The novel use in correcting mistakes in code requires logical reasoning.

 Abstraction in the Computer Science Classroom

Although we have presented relevant characterisations of abstraction, it is still far from clear how an abstraction-oriented perspective could become part of the pedagogical practice. Already in the late 1990s, as a revision of the spreading object-first orientaTable 1

 PGK Hierarchy levels from Perrenet et al. (2005) and their mapping to K-5 settings according to Waite et al. (2018). PGK Level Definition K-5 name K-5 question Problem Algorithm perceived as a problem solving strategy problem “What is needed” Object (algorithm) Algorithm understood independently of any specific implementation design “What it should do” Program Algorithmic grasp of the program code “How it is done” Execution Focus on individual runs with specific inputs running the code “What it does” 630 C. Mirolo et al. tion, Machanick (1998) endorsed an abstraction-first instructional approach where the implementation of abstract data types is delayed as much as possible in order to stress an abstract view of the models.

Kramer remarked that abstraction per se is not the subject of any computing course, but that all computing courses “rely on or utilize abstraction to explain, model, specify, reason or solve problems,” so confirming that “abstraction is an essential aspect of computing, but that it must be taught indirectly through other topics” (Kramer, 2007, p. 41). In line with Kramer’s remark, Hazzan (2008) discussed abstraction as a soft idea, “that can be neither rigidly nor formally defined, nor is it possible to guide students as to its precise application.” And although “it is not a trivial matter,” like other soft ideas, abstraction should be taught in a computer science curriculum.

Then, a small number of educators have provided guidelines to teach abstraction at different instruction levels. Hence, this section briefly explores their approaches to foster and assess abstraction skills. 5.1. Teaching to Trigger Abstraction in Computer Science Often instructors aim to develop students’ abstraction skills indirectly, by devising particular learning trajectories that are supposed to foster higher-level thinking and require students to use abstraction to succeed. In a program development project, for example, they could assign refactoring tasks in which learners are asked to look for recurrent patterns of code and to re-organise the code by introducing meaningful procedural and/or data abstractions with the purpose of making the whole program easier to read, debug and modify. In the following paragraphs we will outline a selection of representative approaches to (an implicit) abstraction-oriented instruction. Pattern-oriented instruction. This approach has the aim of improving students’ competencies in algorithmic problem solving (Muller and Haberman, 2008).

An algorithm is indeed seen by these authors as a combination of plan patterns in Soloway’s sense (Soloway, 1986), resulting via sequencing, nesting or merging plans from a repertory of basic algorithmic patterns specifically designed for pedagogical purposes. In Muller and Haberman’s scenario, abstraction plays a crucial role in pattern recognition, chunking, and problem structure identification. Their approach relies on having an appropriate pattern repository, as well as on presenting carefully selected problems of gradually increasing difficulty; teachers should then discuss and compare different solutions to a given problem in terms of pattern composition. Additional guidelines for pattern-oriented instruction include:

(1) patterns should be abstracted from related examples or by generalising a simpler problem,

(2) patterns should be revisited in different contexts, in order to make the identification of common problem features easier, and (3) similarities, differences, and also possible misuses of patterns should be considered. According to Muller and Haberman, comparative studies appear to show that novices exposed to this approach develop enhanced problem solving abilities. Multiple representations perspective. Dealing with multiple representations of a given phenomenon can play a key role in the development of abstract concepts. Ac- cording to Ainsworth (2008), in particular, in order “to construct a deeper understanding of a domain,” if the learners “fail to relate representations, then processes like abstraction cannot occur. Moreover, although learners find it difficult to relate different forms of representations, if the representations are too similar, then abstraction is also unlikely to occur.” She then recommends that teachers should foster abstraction over multiple representations “by providing focused help and support on how to relate representations and giving learners sufficient time to master this process.” In this respect, Gautam et al. (2020) have recently proposed an interesting interdisciplinary approach to integrate science (namely, chemistry) and computational thinking in the curriculum. While abstraction is usually “presented as hierarchical” in terms of (i) extracting important features and ignoring unimportant ones, and (ii) finding commonalities across contexts, in their standpoint “abstraction in science” as well as in computing “requires students to move laterally across different representations of the concepts or actions.” In the reported study, the micro-level process of photosynthesis was modeled by a code snippet, and by discussing commonalities and differences between, e.g., a whiteboard and the code representation of the implied chemical reaction, “the instructor pushed students towards higher-level abstract thinking.” Moreover, they suggest to allow for friction emerging when the students explore different representations, in that it encourages to consider alternative views and “negotiate the elements with one another.” According to the authors, this approach “created meaningful accounts of science phenomenon and the science provided access to how computation embeds ideas.” Exploration of artefacts.

 A more recent pedagogical trend in programming education attempts to trigger abstraction through activities inspired by the use-modify-create framework. The idea is that the understanding of artefacts such as programs would gradually progress through three major stages, corresponding to

  • exploration via passive use (as a consumer),
  • (ii) experimentation of the internal machinery by modifying some features, and finally
  • (iii) creation of new, original artefacts to achieve specific goals. While discussing the use-modify-create approach, Lee et al. (2014) observe that abstraction, as well as other computational thinking abilities, are “not explicitly taught but rather [develop] through one’s impetus to create;” nevertheless, in this progression the abilities to modify and, later, to create imply the enhancement of learner’s abstraction skills.

This is a course on discrete mathematics as used in Computer Science. It’s only a one-semester course, so there are a lot of topics that it doesn’t cover or doesn’t cover in much depth. But the hope is that this will give you a foundation of skills that you can build on as you need to, and particularly to give you a bit of mathematical maturity—the basic understanding of what mathematics is and how mathematical definitions and proofs work.

  1. So why do I need to learn all this nasty mathematics?

 Why you should know about mathematics, if you are interested in Computer Science: or, more specifically, why you should take CS202 or a comparable course:

• Computation is something that you can’t see and can’t touch, and yet (thanks to the efforts of generations of hardware engineers) it obeys strict, well-defined rules with astonishing accuracy over long periods of time.

• Computations are too big for you to comprehend all at once. Imagine printing out an execution trace that showed every operation a typical $500 desktop computer executed in one (1) second.

If you could read one operation per second, for eight hours every day, you would die of old age before you got halfway through. Now imagine letting the computer run overnight. So in order to understand computations, we need a language that allows us to reason about things we can’t see and can’t touch, that are too big

for us to understand, but that nonetheless follow strict, simple, well-defined rules. We’d like our reasoning to be consistent: any two people using the language should (barring errors) obtain the same conclusions from the same information. Computer scientists are good at inventing languages, so we could invent a new one for this particular purpose, but we don’t have to: the exact same problem has been vexing philosophers, theologians, and mathematicians for much longer than computers have been around, and they’ve had a lot of time to think about how to make such a language work.

 Philosophers and theologians are still working on the consistency part, but mathematicians (mostly) got it in the early 20th-century. Because the first virtue of a computer scientist is laziness, we are going to steal their code.

  1. But isn’t math hard? Yes and no. The human brain is not really designed to do formal mathematical reasoning, which is why most mathematics was invented in the last few centuries and why even apparently simple things like learning how to count or add require years of training, usually done at an early age so the pain will be forgotten later. But mathematical reasoning is very close to legal reasoning, which we do seem to be very good at.1 There is very little structural difference between the two sentences: 1. If x is in S, then x + 1 is in S. 2. If x is of royal blood, then x’s child is of royal blood.

 But because the first is about boring numbers and the second is about fascinating social relationships and rules, most people have a much easier time deducing that to show somebody is royal we need to start with some known royal and follow a chain of descendants than they have deducing that to show that some number is in the set S we need to start with some known element of S and show that repeatedly adding 1 gets us to the number we want. And yet to a logician these are the same processes of reasoning. So why is statement

(1) trickier to think about than statement

 (2)? Part of the difference is familiarity—we are all taught from an early age what it means to be somebody’s child, to take on a particular social role, etc. For mathematical concepts, this familiarity comes with exposure and practice, just as with learning any other language. But part of the difference is that 1For a description of some classic experiments that demonstrate this, see http://

Foundations and logic Why: This is the assembly language of mathematics—the stuff at the bottom that everything else compiles to.

 • Propositional logic.

 • Predicate logic.

 • Axioms, theories, and models.

• Proofs.

• Induction and recursion

English Language Arts

To Critical Thinking, the critical person is something like a critical consumer of information; he or she is driven to seek reasons and evidence. Part of this is a matter of mastering certain skills of thought: learning to diagnose invalid forms of argument, knowing how to make and defend distinctions, and so on. Much of the literature in this area, especially early on, seemed to be devoted to lists and taxonomies of what a “critical thinker” should know and be able to do (Ennis 1962, 1980). More recently, however, various authors in this tradition have come to recognize that teaching content and skills is of minor import if learners do not also develop the dispositions or inclination to look at the world through a critical lens. By this, Critical Thinking means that the critical person has not only the capacity (the skills) to seek reasons, truth, and evidence, but also that he or she has the drive (disposition) to seek them. For instance, Ennis claims that a critical person not only should seek reasons and try to be well informed, but that he or she should have a tendency to do such things (Ennis 1987, 1996). Siegel criticizes Ennis somewhat for seeing dispositions simply as what animates the skills of critical thinking, because this fails to distinguish sufficiently the critical thinker from critical thinking. For Siegel, a cluster of dispositions (the “critical spirit”) is more like a deep-seated character trait, something like Scheffler’s notion of “a love of truth and a contempt of lying” (Siegel 1988; Scheffler 1991). It is part of critical thinking itself. Paul also stresses this distinction between skills and dispositions in his distinction between “weak-sense” and “strong-sense” critical thinking. For Paul, the “weak-sense” means that one has learned the skills and can demonstrate them when asked to do so; the “strong-sense” means that one has incorporated these skills into a way of living in which one’s own assumptions are re-examined and questioned as well. According to Paul, a critical thinker in the “strong sense” has a passionate drive for “clarity, accuracy, and fairmindedness” (Paul 1983, 23; see also Paul 1994). This dispositional view of critical thinking has real advantages over the skills-only view. But in important respects it is still limited. First, it is not clear exactly what is entailed by making such dispositions part of critical thinking. In our view it not only broadens the notion of criticality beyond mere “logicality,” but it necessarily requires a greater attention to institutional contexts and social relations than Critical Thinking authors have provided. Both the skills-based view and the skills-plus-dispositions view are still focused on the individual person. But it is only in the context

A second theme in the Critical Thinking literature has been the extent to which critical thinking can be characterized as a set of generalized abilities and dispositions, as opposed to content-specific abilities and dispositions that are learned and expressed differently in different areas of investigation. Can a general “Critical Thinking” course develop abilities and dispositions that will then be applied in any of a range of fields; or should such material be presented specifically in connection to the questions and content of particular fields of study? Is a scientist who is a critical thinker doing the same things as an historian who is a critical thinker? When each evaluates “good evidence,” are they truly thinking about problems in similar ways, or are the differences in interpretation and application dominant? This debate has set John McPeck, the chief advocate of content-specificity, in opposition to a number of other theorists in this area (Norris 1992; Talaska 1992). This issue relates not only to the question of how we might teach critical thinking, but also to how and whether one can test for a general facility in critical thinking (Ennis 1984). A third debate has addressed the question of the degree to which the standards of critical thinking, and the conception of rationality that underlies them, are culturally biased in favor of a particular masculine and/or Western mode of thinking, one that implicitly devalues other “ways of knowing.” Theories of education that stress the primary importance of logic, conceptual clarity, and rigorous adherence to scientific evidence have been challenged by various advocates of cultural and gender diversity who emphasize respect for alternative world views and styles of reasoning. Partly in response to such criticisms, Richard Paul has developed a conception of critical thinking that regards “sociocentrism” as itself a sign of flawed thinking (Paul 1994). Paul believes that, because critical thinking allows us to overcome the sway of our egocentric and sociocentric beliefs, it is “essential to our role as moral agents and as potential shapers of our own nature and destiny”(Paul 1990, 67). For Paul, and for some other Critical Thinking authors as well, part of the method of critical thinking involves fostering dialogue, in which thinking from the perspective of others is also relevant to the assessment of truth claims; a too-hasty imposition of one’s own standards of evidence might result not only in a premature rejection of credible alternative points of view, but might also have the effect of silencing the voices of those who (in the present context) need to be encouraged as much as possible to speak for themselves. In this respect, we see Paul introducing into the very definition of critical thinking some of the sorts of social and contextual factors that Critical Pedagogy writers have emphasized.

http://mediaeducation.org.mt/wp-content/uploads/2013/05/Critical-Thinking-and-Critical-Pedagogy.pdf

CHAPTER TWO BASIC CONCEPTS OF LOGIC

Chapter Overview Logic, as field of study, may be defined as the organized body of knowledge, or science that evaluates arguments. The aim of logic is to develop a system of methods and principles that we may use as criteria for evaluating the arguments of others and as guides in constructing arguments of our own. Argument is a systematic combination of two or more statements, which are classified as a premise or premises and conclusion. A premise refers to the statement, which is claimed to provide a logical support or evidence to the main point of the argument, which h known as conclusion. A conclusion is a statement, which is claimed to follow from the alleged evidence. Depending on the logical and real ability of the premise(s) to support the conclusion, an argument can be either a good argument or a bad argument. However, unlike all kinds of passages, including those that resemble arguments, all arguments purport to prove something. Arguments can generally be divided into deductive and inductive arguments. A deductive argument is an argument in which the premises are claimed to support the conclusion in such a way that it is impossible for the premises to be true and the conclusion false. On the other hand, an inductive argument is an argument in which the premises are claimed to support the conclusion in such a way that it is improbable that the premises be true and the conclusion false. The deductiveness or inductiveness of an argument can be determined by the particular indicator word it might use, the actual strength of the inferential relationship between its component statements, and its argumentative form or structure. A deductive argument can be evaluated by its validity and soundness. Likewise, an inductive argument can be evaluated by its strength and cogency. Depending on its actually ability to successfully maintain its inferential claim, a deductive argument can be either valid or invalid. That is, if the premise(s) of a certain deductive argument actually support its conclusion in such a way that it is impossible for the premises to be true and the conclusion false, then that particular deductive argument is valid. If, however, its premise(s) actually support its conclusion in such a

way that it is possible for the premises to be true and the conclusion false, then that particular deductive argument is invalid. Similarly, an inductive argument can be either strong or weak, depending on its actually ability to successfully maintain its inferential claim. That is, if the premise(s) of a certain inductive argument actually support its conclusion in such a way that it is improbable for the premises to be true and the conclusion false, then that particular inductive argument is strong. If, however, its premise(s) actually support its conclusion in such a way that it is probable for the premises to be true and the conclusion false, then that particular inductive argument is weak. Furthermore, depending on its actually ability to successfully maintain its inferential claim as well as its factual claim, a deductive argument can be either sound or unsound. That is, if a deductive argument actually maintained its inferential claim, (i.e., if it is valid), and its factual claim, (i.e., if all of its premises are true), then that particular deductive argument will be a sound argument. However, if it fails to maintain either of its claims, it will be an unsound argument. Likewise, depending on its actually ability to successfully maintain its inferential claim as well as its factual claim, an inductive argument can be either cogent or uncogent. That is, if an inductive argument actually maintained its inferential claim, (i.e., if it is strong), and its factual claim, (i.e., if all of its premises are probably true), then that particular inductive argument will be a cogent argument. However, if it fails to maintain either of its claims, it will be an uncogent argument. In this chapter, we will discuss logic and its basic concepts, the techniques of distinguishing arguments from non-argumentative passages, and the types of arguments.

Chapter Objectives: Dear learners, after the successful completion of this chapter, you will be able to:

Ø Understand the meaning and basic concepts of logic;

Ø Understand the meaning, components, and types of arguments; and

Ø Recognize the major techniques of recognizing and evaluating arguments

Lesson 1: Basic Concepts of Logic: Arguments, Premises and Conclusions Lesson Overview Logic is generally be defined as a philosophical science that evaluates arguments. An argument is a systematic combination of one or more than one statements, which are claimed to provide a logical support or evidence (i.e., premise(s) to another single statement which is claimed to follow logically from the alleged evidence (i.e., conclusion). An argument can be either good or bad argument, depending on the logical ability of its premise(s) to support its conclusion. The primary aim of logic is to develop a system of methods and principles that we may use as criteria for evaluating the arguments of others and as guides in constructing arguments of our own. The study of logic increases students‘ confidence to criticize the arguments of others and advance arguments of their own. In this lesson, we will discuss the meaning and basic concepts of logic: arguments, premises, and conclusions. Lesson Objectives: After the accomplishment of this lesson, you will be able to:

Ø Understand the meaning.

Ø Identify the subject matter of logic.

 Ø Understand the meaning of an argument.

Ø Identify the components of an argument.

 Ø Understand the meaning and nature of a premise.

Ø Comprehend the meaning and nature of a conclusion.

Ø Recognize the techniques of identifying the premises and conclusion of an argument.

Conditional Statements

A conditional statement is an ―if . . . then . . .‖ statement.

Example: If you study hard, then you will score „A‟ grade.

 Every conditional statement is made up of two component statements. The component statement immediately following the ―if‖ is called the antecedent (if-clause), and the one following the ―then‖ is called the consequent (then-clause). However, there is an occasion that the order of antecedent and consequent is reversed.

That is, when occasionally the word ‗‗then‘‘ is left out, the order of antecedent and consequent is reversed. For example if we left out ―then‖ from the above example the antecedent and consequent is reversed: You will score „A‟ grade if you study hard. In the above example, the antecedent is ―You study hard,‖ and the consequent is ―

You will score „A‟ grade.‖ In this example, there is a meaningful relationship between antecedent and consequent.

However, such a relationship need not exist for a statement to count as conditional. The statement ―If Getaneh Kebede is a singer, then Hawassa is in Mekelle‖ is just as much a conditional statement as that in the above example.

Conditional statements are not arguments, because they fail to meet the criteria given earlier.

In an argument, at least one statement must claim to present evidence, and there must be a claim that this evidence implies something. In a conditional statement, there is no claim that either the antecedent or the consequent presents evidence. In other words, there is no assertion that either the antecedent or the consequent is true. Rather, there is only the assertion that if the antecedent is true, then so is the consequent.

For example, the above example merely asserts that if you study hard, then you will score ‗A‘. It does not assert that you study hard.

Nor does it assert you scored ‗A‘. Of course, a conditional statement as a whole may present evidence because it asserts a relationship between statements. Yet when conditional statements are taken in this sense, there is still no argument, because there is then no separate claim that this evidence implies anything.

 Therefore, a single conditional statement is not an argument.

The fact that a statement begins with ―if‖ makes it the idea conditional and not a final reasonable assertion.

That is why also conditional statements are not evaluated as true or false without separately evaluating the antecedent and the consequent. They only claim that if the antecedent is true then so is the consequent. However, some conditional statements are similar to arguments in that they express the outcome of a reasoning process. As such, they may be said to have a certain inferential content. Consider the following example: If destroying a political competitor gives you joy, then you have a low sense of morality

https://wcu.edu.et/FirstYearModule/CRITICAL%20THINKING%20module.pdf

Discrete Mathematics

  1. The Conditional Statement Before we give a formal definition of the conditional statement, we start with an example so we can understand when a conditional statement should be true. For the example, we need the following notation and terminology:
  2.  Notation 1.1.

 If p and q are statements, the conditional of q by p is “if p then q” denoted p → q. We call p the hypothesis of the conditional and q the conclusion.

 Example 1.2. Consider the conditional statement, “if I am healthy, I will come to class.” To determine the truth value of this statement, we need to determine when this statement is false, so we consider the four different possibilities for the truth values of p and q.

Let p :=“I am healthy” and q :=“I will come to class”. We shall fill in the following table:

p q p → q T T T T F F F T T F F T

 • For case # 1, if I am healthy and I come to class, the conditional is clearly true.

 • For case # 2, if I am healthy, but I have decided to stay home and not go to class, the conditional is false – the hypothesis is satisfied, but the conclusion is not satisfied, so the statement cannot possibly be true.

• For case # 3, if I am not healthy, but I have come to class anyway though all the people sitting around may not be happy about it, the conditional statement has not been violated since the hypothesis does not hold i.e. the conditional statement is meaningless since the hypothesis is not true. Therefore, the conditional must be true.

 • Likewise, for case # 4, if I am not healthy, and I did not come to class, the conditional statement has not been violated since

the hypothesis does not hold. Therefore, the conditional is true. This example implies that a conditional statement is false only when the hypothesis is true and the conclusion is false. Though it is clear that a conditional statement is false only when the hypothesis is true and the conclusion is false, it is not clear why when the hypothesis is false, the conditional statement is always true. To try to explain why this is this case, we consider another example.

 Example 1.3.

 Consider the mathematical statement “if n is a perfect square, then n is not prime.” Clearly this is a true statement for any n, so it will be true when we substitute values in for n. Now substitute 3 for n: “if 3 is a perfect square, then 3 is not prime.” As remarked above, this conditional statement is still true yet its hypothesis and conclusion are both false. Similarly, if we substitute 6 into this statement, it becomes “if 6 is a perfect square, then 6 is not prime.” This conditional statement is true yet its hypothesis is false and its conclusion is true.

 We can now write down a formal definition for the conditional statement.

 Definition 1.4. If p and q are statements, the conditional of q by p is “if p then q” or “p implies q” denoted p → q. A conditional statement is false only when the hypothesis is false and the conclusion is true. The truth table for the conditional statement is as follows:

p q p → q

T T T T F F

F T T F F T

https://faculty.up.edu/wootton/discrete/section1.2.pdf

Conditional reasoning

Conditional reasoning is based on the construction “if 𝑝, then 𝑞” when the premise is true,

the conclusion will be true. However, this leaves open the question of what happens when

𝑝 is false, which means that, in this case, 𝑞 can logically be either true or false. Studies

are abundant about four main conditional inferences: modus ponens, modus tollens,

affirmation of the consequent and denial of the antecedent. Johnson-Laird and Byrne

(2002) discuss that, among all four conditional inferences mentioned in §§3.1.2, only

modus ponens and modus tollens are valid for the conditional interpretation. The following

is an example of modus ponens:

If it rains, then you get wet.

It rains.

Therefore, you get wet.

https://summit.sfu.ca/_flysystem/fedora/2022-08/input_data/22441/etd21791.pdf

Critics have claimed that mathematics taught in K-11 and K-12 is nothing more than memorizing the facts rather than computing the method of solving the given problem with a known concept of study.

Topic of study which includes discrete mathematics are Set Theory, Relations and Functions, Principles of Mathematical Induction, Permutation and Combinations, Mathematical Reasoning, Probability and some study about Matrices and Determinants.

Discrete Mathematics course is a core part of computer / information science & technology and it facilitates the study of applications in the field of computer science, especially in the areas of data structures, the theory of computer languages and the analysis of algorithms. In addition, this course also provides students with understanding of applications in engineering and the physical and life sciences, as well as in statistics and the social sciences.

 To introduce the student at the high-school level, if not earlier, to the topics and techniques of discrete methods and combinatorial reasoning. Whenever the structures from abstract algebra are required, only the basic theory needed for the application development. Further, the solution of the some applications contribute to the iterative procedures that lead to specific algorithms. The algorithmic approach and solution for the problems is fundamental in discrete mathematics.

Counting concept introduces the basic collection of counting techniques with few motivational examples such as paper folding example, Rubik’s cube problem etc. This provides, count visually distinguishable patterns (Binomial Theorem) for collection of objects with identifiable types of objects, each with several copies are available. Counting the number of distinct elements in a union of possibly non-disjoint sets (inclusion-exclusion formula). Probability theory conceptualize the foundational explanations (event, sample space, independence). Methods of determining the probabilities of events are introduced and the notion of equally likely outcomes are defined. The notion of a random variable is to create a variable whose value is determined by the outcome of a random experiment. Probability distribution described for a particular pattern and a collection of conditional probabilities into a different set of conditional probabilities (Bayes’s Theorem). On higher level, they should be aware of some meta-knowledge and heuristics, and be able to use them appropriately. They should be aware that there are many approaches to achieve the same goal but using the appropriate method of solving the problem and reach the desired result. Influenced by all the examples in discrete mathematics concepts, students shall know it is good to work systematically and in phases, virtually every time when it is possible. Educational targets describes above includes both practical usability and theoretical knowledge. These two aspect shall strength each other systematically, where every student of K-11 and K-12 grade classes efficiently.

The post Write up on Discrete Mathematics in an educational Curriculum for grade school and high school students(Part 2) appeared first on DayDreamin’ Comics.

]]>
https://ddcomics.org/2026/06/13/write-up-on-discrete-mathematics-in-an-educational-curriculum-for-grade-school-and-high-school-studentspart-2/feed/ 0 6823
Write up on Tech Geek history : LISP vs Python Searches https://ddcomics.org/2026/05/31/write-up-on-tech-geek-history-lisp-vs-python-searches/ https://ddcomics.org/2026/05/31/write-up-on-tech-geek-history-lisp-vs-python-searches/#respond Sun, 31 May 2026 17:57:05 +0000 https://ddcomics.org/?p=6759 Significance of the Study Introduction Python was created by Guido van Rossum and first released on February 20, 1991. While the word “python” might bring to mind a large snake, the language’s name actually comes from the classic BBC comedy series Monty Python’s Flying Circus. What makes Python unique is that it began as the vision and work […]

The post Write up on Tech Geek history : LISP vs Python Searches appeared first on DayDreamin’ Comics.

]]>
Significance of the Study

Introduction

Python was created by Guido van Rossum and first released on February 20, 1991. While the word “python” might bring to mind a large snake, the language’s name actually comes from the classic BBC comedy series Monty Python’s Flying Circus.

What makes Python unique is that it began as the vision and work of a single person. Unlike most languages born in big tech companies, Python was created by Guido – driven by a simple goal: to make programming more intuitive and enjoyable.

From that idea, a global community has grown. Thousands of developers, educators, scientists, and enthusiasts continue to shape Python, expanding its reach into AI, data science, education, and beyond.

Even though Python has many of the features of Lisp, it is instructive to look at the original Lisp evaluation mechanism. At the heart of the Lisp language is a recursive interplay between the evaluation of expressions and application of functions. If you look at the code, there is an apply() function, and an eval() function. The interplay of these two functions results in a very elegant piece of code.

Common Lisp: there are similar patterns than in Python, but we can escape them. We can use macros, be concise and do what we want. We can have the decorator syntax with the cl-annot library, and any other by writing our reader macros (they can bring triply-quoted docstrings, string interpolation, infix notation, C syntax…). It’s not only macros though. The polymorphism of the object system (or generic dispatch) helps, and Lisp’s “moldability” in a whole allows us to refactor code exactly how we want, to build a “Domain Specific Language” to express what we want. Other language features than macros help here, like closures or multiple values (which are different, and safer for refactoring, than returning a tuple).

            Chapter 1: LISP Searches vs Python Searches

LISP Searches

A collection (in other words, a list) of assertions is called a database. Given a database , we can write functions to answer questions such as, “What color is block B2?” or “What blocks support block B1?”

To answer these questions, we will use a function called a pattern matcher to search the database for us. For example, to find out the color of block B2, we use the pattern (B2 COLOR?).

> (fetch’(b2 color ?))

 ((B2 COLOR RED))

To find which blocks support B1, we use the pattern (? SUPPORTS B1):

> (fetch'(? supports b1))

 ((B2 SUPPORTS B1) (B3 SUPPORTS B1))

FETCH returns those assertions from the database that match a given pattern. It should be apparent from the preceding examples that a pattern is a triple, like an assertion, with some of its elements replaced by question marks.

Structures are programmer-defined Lisp objects with an arbitrary number of named components. Structure types automatically become part of the Lisp type hierarchy. The DEFSTRUCT macro defines new structures and specifies the names and default values of their components.

 For example, we can define a structure called STARSHIP like this:

 (defstruct starship (name nil) (speed 0)

(condition ‘green) (shields ‘down))

https://www.cs.cmu.edu/~dst/LispBook/lisp-book-figures.pdf

This DEFSTRUCT form defines a new type of object called a STARSHIP whose components are called NAME, SPEED, CONDITION, and SHIELDS. STARSHIP becomes part of the system type hierarchy and can be referenced by such functions as TYPEP and TYPE-OF.

To introduce graph search programming in Lisp, we next represent and solve the farmer, wolf, goat, and cabbage problem: A farmer with his wolf, goat, and cabbage come to the edge of a river they wish to cross. There is a boat at the river’s edge, but, of course, only the farmer can row it. The boat also can carry only two things (including the rower) at a time. If the wolf is ever left alone with the goat, the wolf will eat the goat; similarly, if the goat is left alone with the cabbage, the goat will eat the cabbage. Devise a sequence of crossings of the river so that all four characters arrive safely on the other side of the river.

 The Lisp version searches the same space and has structural similarities to the Prolog solution; however, it differs in ways that reflect Lisp’s imperative/functional orientation. The Lisp solution searches the state space in a depth-first fashion using a list of visited states to avoid loops. The heart of the program is a set of functions that define states of the world as an abstract data type. These functions hide the internals of state representation from higher-level components of the program. States are represented as lists of four elements, where each element denotes the location of the farmer, wolf, goat, or cabbage, respectively.

Thus, (e w e w) represents the state in which the farmer (the first element) and the goat (the third element) are on the east bank and the wolf and cabbage are on the west. The basic functions defining the state data type will be a constructor, make-state, which takes as arguments the locations of the farmer, wolf, goat, and cabbage and returns a state, and four access functions, farmer-side, wolf-side, goatside, and cabbage-side, which take a state and return the location of an individual. These functions are defined:

(defun make-state (f w g c) (list f w g c))

(defun farmer-side (state) (nth 0 state))

(defun wolf-side (state) (nth 1 state))

 (defun goat-side (state) (nth 2 state))

 (defun cabbage-side (state) (nth 3 state))

The rest of the program is built on these state access and construction functions. In particular, they are used to implement the four possible actions the farmer may take: rowing across the river alone or with either of the wolf, goat, or cabbage. Each move uses the access functions to tear a state apart into its components. A function called opposite (to be defined shortly) determines the new location of the individuals that cross the river, and make-state reassembles

these into the new state.

 For example, the function farmer-takes-self may be defined:

(defun farmer-takes-self (state)

 (make-state (opposite (farmer-side state))

 (wolf-side state)

(goat-side state)

 (cabbage-side state)))

Note that farmer-takes-self returns the new state, regardless of whether it is safe or not. A state is unsafe if the farmer has left the goat alone with the cabbage or left the wolf alone with the goat. The program must find a solution path that does not contain any unsafe states. Although this “safe” check may be done at a number of different stages in the execution of the program, our approach is to perform it in the move functions. This is implemented by using a function called safe, which we also define shortly. safe has the following behavior:

> (safe ‘(w w w w)) ;safe state, return unchanged (w w w w) > (safe ‘(e w w e)) ;wolf eats goat, return nil nil > (safe ‘(w w e e)) ;

Python Linear Search

Searching is when we find something in a data structure. We frequently search for strings in things like web pages, PDFs, documents, etc., but we can also search through other data structures, like lists, dictionaries, etc. Depending on how our data is organized, we can search in different ways. For unorganized data, we usually have to do a linear search, which is the first type of search we will discuss. If our data is organized in some way, we can do more efficient searches. If our data is in a strict order, we can perform a binary search, which is the second type of search we will look at.:

 Linear Searching Lecture 10: Linear Searching The most straightforward type of search is the linear search. We traverse the data structure (e.g., a string’s characters, or a list) until we find the result. How would we do a linear search on a list, like this? Let’s say we are searching for 15

. lst = [12, 4, 9, 18, 53, 82, 15, 99, 98, 14, 11]

The most straightforward type of search is the linear search. We traverse the data structure (e.g., a string’s characters, or a list) until we find the result. How would we do a linear search on a list, like this? Let’s say we are searching for 15.

: Linear Searching lst = [12, 4, 9, 18, 53, 82, 15, 99, 98, 14, 11]

def linear_search(lst, value_to_find):

“”” Perform a linear search to find a value in the list :

param lst: a list :param value_to_find: the value we want to find

:return:

the index of the found element, or -1

 if the element does not exist in the list

 >>> linear_search([12, 4, 9, 18, 53, 82, 15, 99, 98, 14, 11], 15) 6

>>> linear_search([12, 4, 9, 18, 53, 82, 15, 99, 98, 14, 11], 42) -1

“”” for i, value in enumerate(lst):

if value == value_to_find:

 return i return –

Python’s  Linear Search

Linear Search What is a Linear Search? Linear search is a method of finding elements within a list. It is also called a sequential search. It is the simplest searching algorithm because it searches the desired element in a sequential manner. It compares each and every element with the value that we are searching for. If both are matched, the element is found, and the algorithm returns the key’s index position. Concept of Linear Search Let’s understand the following steps to find the element key = 7 in the given list.

Step – 1: Start the search from the first element and Check key = 7 with each element of list x.

Linear Search Algorithm There is list of n elements and key value to be searched. Below is the linear search algorithm.

 1. LinearSearch(list, key)

2. for each item in the list

3. if item == value

4. return its index position

 5. return -1

Python Program Let’s understand the following Python implementation of the linear search algorithm.

Program 1.

def linear_

Search(list1, n, key): 2.

 3. # Searching list1 sequentially

 4. for i in range(0, n):

 5. if (list1[i] == key):

6. return i

7. return -1

8.

9.

10. list1 = [1 ,3, 5, 4, 7, 9]

11. key = 7

12.

13. n = len(list1)

14. res = linear_Search(list1, n, key)

 15. if(res == -1):

16. print(“Element not found”)

17. else:

18. print(“Element found at index: “, res)

 Output: Element found at index:

Explanation: In the above code, we have created a function linear_Search(), which takes three arguments – list1, length of the list, and number to search. We defined for loop and iterate each element and compare to the key value. If element is found, return the index else return -1 which means element is not present in the list.

The post Write up on Tech Geek history : LISP vs Python Searches appeared first on DayDreamin’ Comics.

]]>
https://ddcomics.org/2026/05/31/write-up-on-tech-geek-history-lisp-vs-python-searches/feed/ 0 6759
Write up on Searching for Eden(Chapter 4) Book of Enoch -Tree of Life Angelic Presence https://ddcomics.org/2026/05/31/write-up-on-searching-for-edenchapter-4/ https://ddcomics.org/2026/05/31/write-up-on-searching-for-edenchapter-4/#respond Sun, 31 May 2026 17:31:10 +0000 https://ddcomics.org/?p=6755 Literature Review Chapter 4: Introduction A foundational point of scholarly consensus regarding the Book of Enoch is its pseudepigraphal nature. The work is attributed to the biblical patriarch Enoch, the great-grandfather of Noah, but it was not written by him.² The historical Enoch lived in the antediluvian period (Genesis 5:21-24), thousands of years before these […]

The post Write up on Searching for Eden(Chapter 4) Book of Enoch -Tree of Life Angelic Presence appeared first on DayDreamin’ Comics.

]]>
Literature Review

Chapter 4:

Introduction

A foundational point of scholarly consensus regarding the Book of Enoch is its pseudepigraphal nature. The work is attributed to the biblical patriarch Enoch, the great-grandfather of Noah, but it was not written by him.² The historical Enoch lived in the antediluvian period (Genesis 5:21-24), thousands of years before these texts were composed. The attribution of authorship to a revered ancient figure was a common literary convention in antiquity, employed not necessarily to deceive but to lend authority and prestige to a text by connecting it to a foundational figure from the past.¹¹

Modern scholarship universally agrees that 1 Enoch is a composite work, a library of texts penned by multiple anonymous Jewish authors over a long period.² This process of composition and redaction spanned several centuries, with the earliest sections, such as the Astronomical Book and the Book of the Watchers, dating to the 3rd century BCE or even earlier.² Other parts were added over time, with the Book of Parables widely considered the latest section, likely composed in the late 1st century BCE or the 1st century CE.⁴ The original language of these texts was Semitic; the oldest parts were almost written in Aramaic, with some portions possibly in Hebrew.⁴ These original texts were later translated into Greek, and it is from a Greek version that the complete Ethiopic (Ge’ez) translation—the only full version to survive—was made.⁴

For centuries, the study of Enoch in the West relied on this Ethiopic version, which was “rediscovered” and brought to Europe by the Scottish traveler James Bruce in 1773.⁴ But the academic understanding of the book was revolutionized in the mid-20th century with the discovery of the Dead Sea Scrolls. Among the texts found in the caves at Qumran were numerous fragments of 1 Enoch written in its original Aramaic.²

The significance of this discovery cannot be overstated. These fragments, which were scientifically dated as far back as the 3rd century BCE, provided incontrovertible physical evidence of the book’s great antiquity and its pre-Christian origins.² This definitively put to rest any lingering speculation that the book might have been a later Christian creation and firmly established it as a product of Second Temple Judaism.¹⁸ The presence of these scrolls at Qumran demonstrates that 1 Enoch was known, read, and valued by sectarian Jewish communities like the Essenes long before the time of Christ. Intriguingly, fragments from every major section of 1 Enoch were found except for the Book of Parables.⁴ This absence has fueled a long-standing and vigorous scholarly debate regarding the date, provenance, and circulation of that particular section.¹⁹

Before the discovery at Qumran, the influence of Enoch on the New Testament was a matter of literary conjecture based on the later Ethiopic text. The Dead Sea Scrolls, But act as a historical and textual bridge, transforming the nature of this inquiry. They provide concrete, datable proof that Aramaic versions of Enochic literature were circulating in Judea centuries before the birth of Jesus and the apostles. This physical evidence makes the connection undeniable. The question is no longer if the New Testament authors could have known these traditions, but rather how they engaged with a body of literature that was demonstrably part of their immediate religious and cultural landscape. The scrolls ground the Book of Enoch firmly in the soil from which early Christianity grew, making the study of its influence not merely a literary exercise but a historical necessity for understanding the intellectual and theological world of the New Testament.

An Academic Exploration of the Book of Enoch: Content, Influence, and Canonical Status – Nicene Journal For Christian Theology

Content of the Problem:

The Book of Enoch was never considered authentic by the Jewish rabbis, and it was never included in the Hebrew Scriptures’ canon. There are twenty Book of Enoch manuscripts in the Dead Sea Scrolls, but all are in Aramaic, not Hebrew. Thus, they are not part of the Hebrew Old Testament. We have far less early manuscripts for the Book of Enoch than we do for the recognized canon. For comparison, we have a thousand manuscripts for each of the four Gospels, 500 for the book of Acts and the Epistles and several hundred for the book of Revelation. This indicates Enoch was not as acclaimed as the books deemed to be inspired. Throughout the Gospel Age, it was never up for consideration to be part of the Bible, including in the Catholic or Greek Orthodox Bibles.

Jude’s epistle was included in Scripture because Jude himself was considered a reliable apostolic source, but there were many epistles in circulation as the church developed, and many gospels. There were many apocalyptic books as well, and there were many histories, including the Acts of Peter which was not canonized due to its wild theological nature. And yet, to this day, it remains the earliest historical mention of Peter being crucified upside down, a legend that still perpetuates within Christianity. The Maccabees are also absent from Protestant Bibles, but that does not mean they lack value as to historical authenticity.

This is why Jude quotes the Book of Enoch in his epistle. He is addressing an argument using documentation that had historical relevance to the Jews of that time – the Book of Enoch. But just because the Bible references histories and philosophical arguments that were popular at the time, doesn’t mean that the writings of Philo of Alexandria should be canonized. This also doesn’t mean Philo’s works are without value. Or that reading Enoch isn’t valuable for its historical context, or that it wasn’t considered inspired by some Christian sects. Or the Maccabees for that matter.

Literature Review

In 9: 9-10 Gabriel is sent to destroy the children of the angels (now called “Watchers”). These giants are described as “bastards and children of adultery.” Verse 10 says these giants hoped to live for five hundred years, which may be taken as how long they hoped to live before judgment came upon them, although it may simply refer to the length of their lives. There is no reference to the long lives of humans in 1 Enoch before the flood, so the five hundred-year life-span may be what is in mind. In verse 11 Michael is sent to warn Semyaz he is about to be judged and bound for seventy generations under the mountains, until the day of judgment, in a pit of fire. Again, a similar theme is found in Jude 6 and Revelation 20:10-15.

After the time of judgment the world will be cleansed and the righteous will flourish: 10:18-19 mentions agricultural blessings; 10:21 describes the earth as cleansed from all pollution. God’s speech concludes in Chapter 11 with a brief description of the “storehouse of blessing” which will be opened after the time of judgment, a time when “peace and truth shall become partners again in all the days of the world and in all the generations of the earth.”

Looking back to the inspiration for this story in Genesis, the evil world is destroyed by the Flood, but this does not eradicate sin (Gen 9:20-29). 1 Enoch describes the world after the Watchers are destroyed as a time of peace and truth “for all eternity.” A similar apocalyptic pattern of coming judgment followed by a time of ultimate peace is certainly found in Revelation 20-22.

1 And it came to pass when the children of men had multiplied that in those days were born unto 2 them beautiful and comely daughters. And the angels, the children of the heaven, saw and lusted after them, and said to one another: ‘Come, let us choose us wives from among the children of men 3 and beget us children.’ And Semjaza, who was their leader, said unto them: ‘I fear ye will not 4 indeed agree to do this deed, and I alone shall have to pay the penalty of a great sin.’ And they all answered him and said: ‘Let us all swear an oath, and all bind ourselves by mutual imprecations 5 not to abandon this plan but to do this thing.’ Then sware they all together and bound themselves 6 by mutual imprecations upon it. And they were in all two hundred; who descended in the days of Jared on the summit of Mount Hermon, and they called it Mount Hermon, because they had sworn 7 and bound themselves by mutual imprecations upon it. And these are the names of their leaders: Samlazaz, their leader, Araklba, Rameel, Kokablel, Tamlel, Ramlel, Danel, Ezeqeel, Baraqijal, 8 Asael, Armaros, Batarel, Ananel, Zaqiel, Samsapeel, Satarel, Turel, Jomjael, Sariel. These are their chiefs of tens.

[Chapter 7]

1 And all the others together with them took unto themselves wives, and each chose for himself one, and they began to go in unto them and to defile themselves with them, and they taught them charms 2 and enchantments, and the cutting of roots, and made them acquainted with plants. And they 3 became pregnant, and they bare great giants, whose height was three thousand ells: Who consumed 4 all the acquisitions of men. And when men could no longer sustain them, the giants turned against 5 them and devoured mankind. And they began to sin against birds, and beasts, and reptiles, and 6 fish, and to devour one another’s flesh, and drink the blood. Then the earth laid accusation against the lawless ones.

[Chapter 8]

1 And Azazel taught men to make swords, and knives, and shields, and breastplates, and made known to them the metals of the earth and the art of working them, and bracelets, and ornaments, and the use of antimony, and the beautifying of the eyelids, and all kinds of costly stones, and all 2 colouring tinctures. And there arose much godlessness, and they committed fornication, and they 3 were led astray, and became corrupt in all their ways. Semjaza taught enchantments, and root-cuttings, ‘Armaros the resolving of enchantments, Baraqijal (taught) astrology, Kokabel the constellations, Ezeqeel the knowledge of the clouds, Araqiel the signs of the earth, Shamsiel the signs of the sun, and Sariel the course of the moon. And as men perished, they cried, and their cry went up to heaven . . .

[Chapter 9]

1 And then Michael, Uriel, Raphael, and Gabriel looked down from heaven and saw much blood being 2 shed upon the earth, and all lawlessness being wrought upon the earth. And they said one to another: ‘The earth made without inhabitant cries the voice of their cryingst up to the gates of heaven. 3 And now to you, the holy ones of heaven, the souls of men make their suit, saying, “Bring our cause 4 before the Most High.”‘ And they said to the Lord of the ages: ‘Lord of lords, God of gods, King of kings, and God of the ages, the throne of Thy glory (standeth) unto all the generations of the 5 ages, and Thy name holy and glorious and blessed unto all the ages! Thou hast made all things, and power over all things hast Thou: and all things are naked and open in Thy sight, and Thou seest all 6 things, and nothing can hide itself from Thee. Thou seest what Azazel hath done, who hath taught all unrighteousness on earth and revealed the eternal secrets which were (preserved) in heaven, which 7 men were striving to learn: And Semjaza, to whom Thou hast given authority to bear rule over his associates. And they have gone to the daughters of men upon the earth, and have slept with the 9 women, and have defiled themselves, and revealed to them all kinds of sins. And the women have 10 borne giants, and the whole earth has thereby been filled with blood and unrighteousness. And now, behold, the souls of those who have died are crying and making their suit to the gates of heaven, and their lamentations have ascended: and cannot cease because of the lawless deeds which are 11 wrought on the earth. And Thou knowest all things before they come to pass, and Thou seest these things and Thou dost suffer them, and Thou dost not say to us what we are to do to them in regard to these.’

[Chapter 10]

1 Then said the Most High, the Holy and Great One spake, and sent Uriel to the son of Lamech, 2 and said to him: ‘Go to Noah and tell him in my name “Hide thyself!” and reveal to him the end that is approaching: that the whole earth will be destroyed, and a deluge is about to come 3 upon the whole earth, and will destroy all that is on it. And now instruct him that he may escape 4 and his seed may be preserved for all the generations of the world.’ And again the Lord said to Raphael: ‘Bind Azazel hand and foot, and cast him into the darkness: and make an opening 5 in the desert, which is in Dudael, and cast him therein. And place upon him rough and jagged rocks, and cover him with darkness, and let him abide there for ever, and cover his face that he may 6,7 not see light. And on the day of the great judgement he shall be cast into the fire. And heal the earth which the angels have corrupted, and proclaim the healing of the earth, that they may heal the plague, and that all the children of men may not perish through all the secret things that the 8 Watchers have disclosed and have taught their sons. And the whole earth has been corrupted 9 through the works that were taught by Azazel: to him ascribe all sin.’ And to Gabriel said the Lord: ‘Proceed against the bastards and the reprobates, and against the children of fornication: and destroy [the children of fornication and] the children of the Watchers from amongst men [and cause them to go forth]: send them one against the other that they may destroy each other in 10 battle: for length of days shall they not have. And no request that they (i.e. their fathers) make of thee shall be granted unto their fathers on their behalf; for they hope to live an eternal life, and 11 that each one of them will live five hundred years.’ And the Lord said unto Michael: ‘Go, bind Semjaza and his associates who have united themselves with women so as to have defiled themselves 12 with them in all their uncleanness. And when their sons have slain one another, and they have seen the destruction of their beloved ones, bind them fast for seventy generations in the valleys of the earth, till the day of their judgement and of their consummation, till the judgement that is 13 for ever and ever is consummated. In those days they shall be led off to the abyss of fire: and 14 to the torment and the prison in which they shall be confined for ever. And whosoever shall be condemned and destroyed will from thenceforth be bound together with them to the end of all 15 generations. And destroy all the spirits of the reprobate and the children of the Watchers, because 16 they have wronged mankind. Destroy all wrong from the face of the earth and let every evil work come to an end: and let the plant of righteousness and truth appear: and it shall prove a blessing; the works of righteousness and truth’ shall be planted in truth and joy for evermore.

17 And then shall all the righteous escape,
And shall live till they beget thousands of children
And all the days of their youth and their old age
Shall they complete in peace.

18 And then shall the whole earth be tilled in righteousness, and shall all be planted with trees and 19 be full of blessing. And all desirable trees shall be planted on it, and they shall plant vines on it: and the vine which they plant thereon shall yield wine in abundance, and as for all the seed which is sown thereon each measure (of it) shall bear a thousand, and each measure of olives shall yield 20 ten presses of oil. And cleanse thou the earth from all oppression, and from all unrighteousness, and from all sin, and from all godlessness: and all the uncleanness that is wrought upon the earth 21 destroy from off the earth. And all the children of men shall become righteous, and all nations 22 shall offer adoration and shall praise Me, and all shall worship Me. And the earth shall be cleansed from all defilement, and from all sin, and from all punishment, and from all torment, and I will never again send (them) upon it from generation to generation and for ever.

[Chapter 11]

1 And in those days I will open the store chambers of blessing which are in the heaven, so as to send 2 them down upon the earth over the work and labour of the children of men. And truth and peace shall be associated together throughout all the days of the world and throughout all the generations of men.’

[Chapter 12]

1 Before these things Enoch was hidden, and no one of the children of men knew where he was 2 hidden, and where he abode, and what had become of him. And his activities had to do with the Watchers, and his days were with the holy ones. 3 And I Enoch was blessing the Lord of majesty and the King of the ages, and lo! the Watchers 4 called me -Enoch the scribe- and said to me: ‘Enoch, thou scribe of righteousness, go, declare to the Watchers of the heaven who have left the high heaven, the holy eternal place, and have defiled themselves with women, and have done as the children of earth do, and have taken unto themselves 5 wives: “Ye have wrought great destruction on the earth: And ye shall have no peace nor forgiveness 6 of sin: and inasmuch as they delight themselves in their children, The murder of their beloved ones shall they see, and over the destruction of their children shall they lament, and shall make supplication unto eternity, but mercy and peace shall ye not attain.”‘

[Chapter 13]

1 And Enoch went and said: ‘Azazel, thou shalt have no peace: a severe sentence has gone forth 2 against thee to put thee in bonds: And thou shalt not have toleration nor request granted to thee, because of the unrighteousness which thou hast taught, and because of all the works of godlessness 3 and unrighteousness and sin which thou hast shown to men.’ Then I went and spoke to them all 4 together, and they were all afraid, and fear and trembling seized them. And they besought me to draw up a petition for them that they might find forgiveness, and to read their petition in the presence 5 of the Lord of heaven. For from thenceforward they could not speak (with Him) nor lift up their 6 eyes to heaven for shame of their sins for which they had been condemned. Then I wrote out their petition, and the prayer in regard to their spirits and their deeds individually and in regard to their 7 requests that they should have forgiveness and length. And I went off and sat down at the waters of Dan, in the land of Dan, to the south of the west of Hermon: I read their petition till I fell 8 asleep. And behold a dream came to me, and visions fell down upon me, and I saw visions of chastisement, and a voice came bidding (me) I to tell it to the sons of heaven, and reprimand them. 9 And when I awaked, I came unto them, and they were all sitting gathered together, weeping in 10 ‘Abelsjail, which is between Lebanon and Seneser, with their faces covered. And I recounted before them all the visions which I had seen in sleep, and I began to speak the words of righteousness, and to reprimand the heavenly Watchers.

1 And it came to pass when the children of men had multiplied that in those days were born unto 2 them beautiful and comely daughters. And the angels, the children of the heaven, saw and lusted after them, and said to one another: ‘Come, let us choose us wives from among the children of men 3 and beget us children.’ And Semjaza, who was their leader, said unto them: ‘I fear ye will not 4 indeed agree to do this deed, and I alone shall have to pay the penalty of a great sin.’ And they all answered him and said: ‘Let us all swear an oath, and all bind ourselves by mutual imprecations 5 not to abandon this plan but to do this thing.’ Then sware they all together and bound themselves 6 by mutual imprecations upon it. And they were in all two hundred; who descended in the days of Jared on the summit of Mount Hermon, and they called it Mount Hermon, because they had sworn 7 and bound themselves by mutual imprecations upon it. And these are the names of their leaders: Samlazaz, their leader, Araklba, Rameel, Kokablel, Tamlel, Ramlel, Danel, Ezeqeel, Baraqijal, 8 Asael, Armaros, Batarel, Ananel, Zaqiel, Samsapeel, Satarel, Turel, Jomjael, Sariel. These are their chiefs of tens.

[Chapter 7]

1 And all the others together with them took unto themselves wives, and each chose for himself one, and they began to go in unto them and to defile themselves with them, and they taught them charms 2 and enchantments, and the cutting of roots, and made them acquainted with plants. And they 3 became pregnant, and they bare great giants, whose height was three thousand ells: Who consumed 4 all the acquisitions of men. And when men could no longer sustain them, the giants turned against 5 them and devoured mankind. And they began to sin against birds, and beasts, and reptiles, and 6 fish, and to devour one another’s flesh, and drink the blood. Then the earth laid accusation against the lawless ones.

[Chapter 8]

1 And Azazel taught men to make swords, and knives, and shields, and breastplates, and made known to them the metals of the earth and the art of working them, and bracelets, and ornaments, and the use of antimony, and the beautifying of the eyelids, and all kinds of costly stones, and all 2 colouring tinctures. And there arose much godlessness, and they committed fornication, and they 3 were led astray, and became corrupt in all their ways. Semjaza taught enchantments, and root-cuttings, ‘Armaros the resolving of enchantments, Baraqijal (taught) astrology, Kokabel the constellations, Ezeqeel the knowledge of the clouds, Araqiel the signs of the earth, Shamsiel the signs of the sun, and Sariel the course of the moon. And as men perished, they cried, and their cry went up to heaven . . .

[Chapter 9]

1 And then Michael, Uriel, Raphael, and Gabriel looked down from heaven and saw much blood being 2 shed upon the earth, and all lawlessness being wrought upon the earth. And they said one to another: ‘The earth made without inhabitant cries the voice of their cryingst up to the gates of heaven. 3 And now to you, the holy ones of heaven, the souls of men make their suit, saying, “Bring our cause 4 before the Most High.”‘ And they said to the Lord of the ages: ‘Lord of lords, God of gods, King of kings, and God of the ages, the throne of Thy glory (standeth) unto all the generations of the 5 ages, and Thy name holy and glorious and blessed unto all the ages! Thou hast made all things, and power over all things hast Thou: and all things are naked and open in Thy sight, and Thou seest all 6 things, and nothing can hide itself from Thee. Thou seest what Azazel hath done, who hath taught all unrighteousness on earth and revealed the eternal secrets which were (preserved) in heaven, which 7 men were striving to learn: And Semjaza, to whom Thou hast given authority to bear rule over his associates. And they have gone to the daughters of men upon the earth, and have slept with the 9 women, and have defiled themselves, and revealed to them all kinds of sins. And the women have 10 borne giants, and the whole earth has thereby been filled with blood and unrighteousness. And now, behold, the souls of those who have died are crying and making their suit to the gates of heaven, and their lamentations have ascended: and cannot cease because of the lawless deeds which are 11 wrought on the earth. And Thou knowest all things before they come to pass, and Thou seest these things and Thou dost suffer them, and Thou dost not say to us what we are to do to them in regard to these.’

[Chapter 10]

1 Then said the Most High, the Holy and Great One spake, and sent Uriel to the son of Lamech, 2 and said to him: ‘Go to Noah and tell him in my name “Hide thyself!” and reveal to him the end that is approaching: that the whole earth will be destroyed, and a deluge is about to come 3 upon the whole earth, and will destroy all that is on it. And now instruct him that he may escape 4 and his seed may be preserved for all the generations of the world.’ And again the Lord said to Raphael: ‘Bind Azazel hand and foot, and cast him into the darkness: and make an opening 5 in the desert, which is in Dudael, and cast him therein. And place upon him rough and jagged rocks, and cover him with darkness, and let him abide there for ever, and cover his face that he may 6,7 not see light. And on the day of the great judgement he shall be cast into the fire. And heal the earth which the angels have corrupted, and proclaim the healing of the earth, that they may heal the plague, and that all the children of men may not perish through all the secret things that the 8 Watchers have disclosed and have taught their sons. And the whole earth has been corrupted 9 through the works that were taught by Azazel: to him ascribe all sin.’ And to Gabriel said the Lord: ‘Proceed against the bastards and the reprobates, and against the children of fornication: and destroy [the children of fornication and] the children of the Watchers from amongst men [and cause them to go forth]: send them one against the other that they may destroy each other in 10 battle: for length of days shall they not have. And no request that they (i.e. their fathers) make of thee shall be granted unto their fathers on their behalf; for they hope to live an eternal life, and 11 that each one of them will live five hundred years.’ And the Lord said unto Michael: ‘Go, bind Semjaza and his associates who have united themselves with women so as to have defiled themselves 12 with them in all their uncleanness. And when their sons have slain one another, and they have seen the destruction of their beloved ones, bind them fast for seventy generations in the valleys of the earth, till the day of their judgement and of their consummation, till the judgement that is 13 for ever and ever is consummated. In those days they shall be led off to the abyss of fire: and 14 to the torment and the prison in which they shall be confined for ever. And whosoever shall be condemned and destroyed will from thenceforth be bound together with them to the end of all 15 generations. And destroy all the spirits of the reprobate and the children of the Watchers, because 16 they have wronged mankind. Destroy all wrong from the face of the earth and let every evil work come to an end: and let the plant of righteousness and truth appear: and it shall prove a blessing; the works of righteousness and truth’ shall be planted in truth and joy for evermore.

17 And then shall all the righteous escape,
And shall live till they beget thousands of children
And all the days of their youth and their old age
Shall they complete in peace.

18 And then shall the whole earth be tilled in righteousness, and shall all be planted with trees and 19 be full of blessing. And all desirable trees shall be planted on it, and they shall plant vines on it: and the vine which they plant thereon shall yield wine in abundance, and as for all the seed which is sown thereon each measure (of it) shall bear a thousand, and each measure of olives shall yield 20 ten presses of oil. And cleanse thou the earth from all oppression, and from all unrighteousness, and from all sin, and from all godlessness: and all the uncleanness that is wrought upon the earth 21 destroy from off the earth. And all the children of men shall become righteous, and all nations 22 shall offer adoration and shall praise Me, and all shall worship Me. And the earth shall be cleansed from all defilement, and from all sin, and from all punishment, and from all torment, and I will never again send (them) upon it from generation to generation and for ever.

[Chapter 11]

1 And in those days I will open the store chambers of blessing which are in the heaven, so as to send 2 them down upon the earth over the work and labour of the children of men. And truth and peace shall be associated together throughout all the days of the world and throughout all the generations of men.’

[Chapter 12]

1 Before these things Enoch was hidden, and no one of the children of men knew where he was 2 hidden, and where he abode, and what had become of him. And his activities had to do with the Watchers, and his days were with the holy ones. 3 And I Enoch was blessing the Lord of majesty and the King of the ages, and lo! the Watchers 4 called me -Enoch the scribe- and said to me: ‘Enoch, thou scribe of righteousness, go, declare to the Watchers of the heaven who have left the high heaven, the holy eternal place, and have defiled themselves with women, and have done as the children of earth do, and have taken unto themselves 5 wives: “Ye have wrought great destruction on the earth: And ye shall have no peace nor forgiveness 6 of sin: and inasmuch as they delight themselves in their children, The murder of their beloved ones shall they see, and over the destruction of their children shall they lament, and shall make supplication unto eternity, but mercy and peace shall ye not attain.”‘

[Chapter 13]

1 And Enoch went and said: ‘Azazel, thou shalt have no peace: a severe sentence has gone forth 2 against thee to put thee in bonds: And thou shalt not have toleration nor request granted to thee, because of the unrighteousness which thou hast taught, and because of all the works of godlessness 3 and unrighteousness and sin which thou hast shown to men.’ Then I went and spoke to them all 4 together, and they were all afraid, and fear and trembling seized them. And they besought me to draw up a petition for them that they might find forgiveness, and to read their petition in the presence 5 of the Lord of heaven. For from thenceforward they could not speak (with Him) nor lift up their 6 eyes to heaven for shame of their sins for which they had been condemned. Then I wrote out their petition, and the prayer in regard to their spirits and their deeds individually and in regard to their 7 requests that they should have forgiveness and length. And I went off and sat down at the waters of Dan, in the land of Dan, to the south of the west of Hermon: I read their petition till I fell 8 asleep. And behold a dream came to me, and visions fell down upon me, and I saw visions of chastisement, and a voice came bidding (me) I to tell it to the sons of heaven, and reprimand them. 9 And when I awaked, I came unto them, and they were all sitting gathered together, weeping in 10 ‘Abelsjail, which is between Lebanon and Seneser, with their faces covered. And I recounted before them all the visions which I had seen in sleep, and I began to speak the words of righteousness, and to reprimand the heavenly Watchers.

https://www.philipharland.com/Courses/Readings/4819/P%201%20Enoch%20(password).pdfC

References:

An Academic Exploration of the Book of Enoch: Content, Influence, and Canonical Status – Nicene Journal For Christian Theology

https://www.philipharland.com/Courses/Readings/4819/P%201%20Enoch%20(password).pdfC

Top of Form

Bottom of Form

The post Write up on Searching for Eden(Chapter 4) Book of Enoch -Tree of Life Angelic Presence appeared first on DayDreamin’ Comics.

]]>
https://ddcomics.org/2026/05/31/write-up-on-searching-for-edenchapter-4/feed/ 0 6755
Write up on Searching for Eden(Chapter 3): Fall of Man & Angelic Roles https://ddcomics.org/2026/05/31/write-up-on-searching-for-edenchapter-3/ https://ddcomics.org/2026/05/31/write-up-on-searching-for-edenchapter-3/#respond Sun, 31 May 2026 17:24:13 +0000 https://ddcomics.org/?p=6753 The Tree of Life Chapter 3: Introduction The tree of life appears in the Book of Genesis, at the very beginning of the Hebrew Bible – what many Christians call the Old Testament. In the creation story of chapters 2 and 3, God places man in the Garden of Eden, then creates woman, Eve, from […]

The post Write up on Searching for Eden(Chapter 3): Fall of Man & Angelic Roles appeared first on DayDreamin’ Comics.

]]>
The Tree of Life

Chapter 3:

Introduction

The tree of life appears in the Book of Genesis, at the very beginning of the Hebrew Bible – what many Christians call the Old Testament.

In the creation story of chapters 2 and 3, God places man in the Garden of Eden, then creates woman, Eve, from his rib. Eden is filled with “every tree that was pleasing to the sight and good for food,” as well as the tree of life and the tree of the knowledge of good and evil – but God commands the man not to eat this last tree’s fruit.

The tree of life appears in both the first and last books of the Christian Bible. In the Genesis account, God removes Adam and Eve from the garden so they cannot eat the fruit of the tree of life (Gen. 3:22–24). In the book of Revelation, the tree’s fruit becomes available in the last days to all who obey the Lord (Rev. 2:7; 22:14). Both texts declare that the tree is “in the midst [middle] of the garden” (Gen. 2:9) or “in the midst of the paradise of God” (Rev. 2:7). Genesis 3:22 recounts how the first couple, after eating the fruit of the tree of knowledge, became like God in being able to distinguish good and evil, and that, had they been able to eat the fruit of the tree of life, they would also have become immortal.2 This is the earliest biblical mention of the tree as a means of prolonging life. The last such reference is in Revelation 22:1–2, where John describes the new Jerusalem descending from heaven, noting that “In the midst of the street of it, and on either side of the river, was there the tree of life, which bare twelve manner of fruits, and yielded her fruit every month: and the leaves of the tree were for the healing of the nations” (Rev. 22:2) and that its presence on earth would abolish death and pain (Rev. 21:4).

The pseudepigraphic Gospel of Nicodemus 3 (19) notes that, when Adam was on his deathbed, he sent his son Seth to procure oil from the tree of life with which to anoint him that he might “arise from his sickness.”3 An angel appeared to Seth and asked him, “Do you desire, because of the sickness of your father, the oil that raises up the sick, or the tree from which flows such oil?” He told Seth to go to his father and tell him “that after the completion of 5,500 years from the creation of the world, the only-begotten Son of God shall become man and shall descend below the earth. And he shall anoint him with that oil [from the garden of Eden]. And he shall arise and wash him and his descendants with water and the Holy Spirit.”4 One Latin version of the story has the angel telling Seth that “thy father Adam will not receive of this oil of compassion now, but after many generations of time. For the most beloved Son of God will come down from heaven into the world, and will be baptized by John in the river Jordan; and then shall thy father Adam receive of this oil of compassion, and all that believe in him.”5 Two other pseudepigraphic texts (Life of Adam and Eve and Apocalypse of Moses) recount this story. They declare that, when Adam fell ill just days before dying, his son Seth proposed that he (Seth) should beg God to give him fruit from the garden with which to heal his father. Adam told him to ask for the “oil of life,” also termed the “oil of mercy.” As in the Nicodemus account, an angel refuses to grant his request, but promises that the oil will be made available to mortals at a future time (Life of Adam and Eve 31, 36, 40–43, and Apocalypse of Moses 6, 9, 13).6

3.2 Garden of Eden

Fall of Man & Angelic Presence

Satan, the leader of the fallen angels, approaches Eve while disguised as a serpent and lies to her about the Tree of Knowledge (also known as the Tree of Life) that God had warned her and Adam not to eat from, or even touch, or else they would die as a result.

Verses 4 and 5 record Satan’s deception, and the temptation he presented to Eve to try to be like God herself:

“‘You will not certainly die,’ the serpent said to the woman. ‘For God knows that when you eat from it your eyes will be opened, and you will be like God, knowing good and evil.’”

Eve fell prey to Satan’s scheme by deciding to rebel against God: She ate some of the forbidden fruit, and then she encouraged Adam to do the same. That brought sin into the world, damaging every part of it. Now tainted by sin, Adam and Eve could no longer be in the presence of a perfectly holy God. God cursed Satan for what he had done and announced the consequences for humanity.

The passage ends with God casting Adam and Eve out of paradise and sending a cherubim angel to guard the Tree of Life:

“And the LORD God said, ‘The man has now become like one of us, knowing good and evil. He must not be allowed to reach out his hand and take also from the tree of life and eat, and live forever.’ So the LORD God banished him from the Garden of Eden to work the ground from which he had been taken. After he drove the man out, he placed on the east side of the Garden of Eden cherubim and a flaming sword flashing back and forth to guard the way to the tree of life.”
—Genesis 3:22-24

The First Angel Mentioned in the Bible and Torah

Archangel Jophiel has the honor of being the very first of many angels who are mentioned in the Bible and Torah. In her book Simply Angels, Beleta Greenaway writes:

“Jophiel (Beauty of God) is the first angel mentioned in the Bible [the first part of which is also the Torah]. His role is to guard the Tree of Life for the Creator. Grasping a fearsome, fiery sword, he had the awesome task of banishing Adam and Eve from the Garden of Eden and will deter any human from stepping onto the hallowed ground again. He has wisdom, will give inspiration, and will help you to use discrimination.”

Beauty Lost, With the Hope of Restoration

It’s interesting to note that Jophiel, whose name means “beauty of God,” is the angel whom God chooses to expel Adam and Eve from the beautiful paradise of the Garden of Eden. In his book The Spiritual Sense in Sacred Legend, Edward J. Brailsford comments:

“Jophiel, the Beauty of God, was the guardian of the Tree of Knowledge. It was he who after the fall drove Adam and Eve out of the Garden of Eden. The association of beauty with knowledge is natural and needs no explanation. But why should Beauty expel the guilty pair, and wave the flaming sword, unless it was that they should ever carry with them the remembrance that justice was tempered with mercy, and have imprinted upon their last memory of paradise a vision, not of the terrible frown of an angry God, but of the beauty of goodness which was grieved and willing to be reconciled?”

Artistic depictions of Jophiel often show the angel in the Garden of Eden, and are meant to portray both the pain of sin’s consequences and the hope of restoration with God, writes Richard Taylor in his book, How To Read a Church. In art, Taylor writes, Jophiel is often shown “carrying the sword of the expulsion of Adam and Eve from the Garden of Eden” and that portrayal serves “to symbolize the early division and later reuniting of God and humankind.”

A Future Paradise

Just as the Tree of Life is seen in the Bible’s first book—Genesis—when sin enters the world, it is seen again in the Bible’s last book—Revelation—in a heavenly paradise. Revelation 22:1-5 reveals how the Garden of Eden will be restored:

“Then the angel showed me the river of the water of life, as clear as crystal, flowing from the throne of God and of the Lamb down the middle of the great street of the city. On each side of the river stood the tree of life, bearing twelve crops of fruit, yielding its fruit every month. And the leaves of the tree are for the healing of the nations. No longer will there be any curse. The throne of God and of the Lamb will be in the city, and his servants will serve him. They will see his face, and his name will be on their foreheads. There will be no more night. They will not need the light of a lamp or the light of the sun, for the Lord God will give them light. And they will reign forever and ever.”

In his book, Living With Angels, Cleo Paul Strawmyer writes: “When John in Revelation speaks of the Tree of Life in paradise, is this the same Tree of Life that the cherubim were guarding in the Garden of Eden? It is the same tree.” Strawmyer continues by writing that angels likely carried the Tree of Life from Earth to heaven to preserve it without the contamination of sin — they “would have to not only guard the tree of life while in the garden but now they would have to lift up the tree and take it to safety in paradise.”

http://www.bahaistudies.net/asma/jophiel_the_angel.pdf

References:

http://www.bahaistudies.net/asma/jophiel_the_angel.pdf

The post Write up on Searching for Eden(Chapter 3): Fall of Man & Angelic Roles appeared first on DayDreamin’ Comics.

]]>
https://ddcomics.org/2026/05/31/write-up-on-searching-for-edenchapter-3/feed/ 0 6753
Write up on Marion Zimmer Bradley’s The Mists of Avalon  https://ddcomics.org/2026/05/23/write-up-on-marion-zimmer-bradleys-the-mists-of-avalon/ https://ddcomics.org/2026/05/23/write-up-on-marion-zimmer-bradleys-the-mists-of-avalon/#respond Sat, 23 May 2026 22:10:41 +0000 https://ddcomics.org/?p=6732 Literature Review The Mists of Avalon is an adaptation of the legends of King Arthur by author Marion Zimmer Bradley. Zimmer Bradley’s novel diverges from most Arthurian adaptations by focusing on the perspectives of the female characters surrounding King Arthur, bringing their occasionally sidelined stories front and center. Zimmer Bradley was a notable figure in the […]

The post Write up on Marion Zimmer Bradley’s The Mists of Avalon  appeared first on DayDreamin’ Comics.

]]>
Literature Review

The Mists of Avalon is an adaptation of the legends of King Arthur by author Marion Zimmer Bradley. Zimmer Bradley’s novel diverges from most Arthurian adaptations by focusing on the perspectives of the female characters surrounding King Arthur, bringing their occasionally sidelined stories front and center. Zimmer Bradley was a notable figure in the science fiction and fantasy world, publishing several acclaimed novels within the genre. The Mists of Avalon was published in 1983 and immediately became popular. In 1984, it was awarded the Locus Award for Best Fantasy Novel. Its success led Zimmer Bradley to expand the book into a series, writing three subsequent installations with collaborator Diana L. Paxson. The Mists of Avalon was also adapted as a miniseries in 2001. Content warnings for The Mists of Avalon include mentions and graphic depictions of rape, incest, and child marriage.

Plot Summary

Morgaine is the daughter of Igraine and Duke Gorlois of Cornwall. Igraine is a child of Avalon, but was married off to Gorlois at a very young age. Though Gorlois loves Igraine in his own way, she pines for Uther Pendragon, the High King of Britain. Her sister Viviane, and Taliesin the Merlin, two powerful figures in the magical land of Avalon, told her she was destined to have Uther’s son. This son would grow to be a legendary king who would unite Britain.

Igraine and Uther marry shortly after Gorlois is killed for treason, and they have a son, Gwydion. Uther sends both children to be fostered after Gwydion’s life is threatened: Morgaine goes to live with Viviane, where she trains to be a priestess of Avalon. Morgaine has a natural gift for magic, and Viviane plans to name her Lady of the Lake one day. She learns that there is a great battle between Druidism and Christianity and that she will play a role in preserving Avalon and uniting Britain under a new High King.

For Avalon to accept him, this new High King must participate in a fertility ritual called the Great Marriage, having sex with a virgin priestess to form a covenant with the land. This will turn him into King Stag, who gives his life for the land and its people. Morgaine completes this ritual with the future king, only to learn afterward that she unwittingly slept with Gwydion, who now goes by the name Arthur. Morgaine is ashamed and upset that the Goddess humiliated her like this.

When Morgaine returns to Avalon, Viviane tells her that she plans to give Arthur Excalibur, a sacred Druid sword. She instructs Morgaine to create an enchanted scabbard that will protect him in battle. This will show Arthur that Avalon supports him and will bind him to protect them as long as he rules. Arthur receives Excalibur before a crucial battle against the Saxons, and his victory proves his legitimacy. When Uther eventually dies, Arthur is crowned with little controversy.

To her dismay, Morgaine finds out that she is pregnant with Arthur’s child. Angry with Viviane, Morgaine renounces Avalon and has her son, Gwydion, in the court of her Aunt Morgause. Morgause and her husband Lot openly desire the throne of Britain, and Gwydion gives them an opportunity to pursue it. Eventually, Morgaine decides to return to Caerleon, where she serves as a lady-in-waiting to Arthur’s new wife, Gwenhwyfar. Gwenhwyfar is beautiful, incredibly anxious, and deeply pious. As a priestess of Avalon, Morgaine often chafes with Gwenhwyfar about matters of religion. They also fight for the affections of Lancelet, Arthur’s most esteemed knight. Gwenhwyfar believes that her adulterous love for Lancelet is preventing her from carrying a pregnancy to term and tortures herself over her feelings.

The night before a key battle against the Saxons, Gwenhwyfar convinces Arthur to fly the sign of the cross rather than the red dragon (a symbol of his protection of all beliefs). Arthur’s decisive victory prompts him to rule as a Christian king. This alienates his allies in Avalon. They only stand with him because he continues to wield Excalibur. After this battle, Arthur moves his court to Camelot.

Gwenhwyfar’s continued inability to produce an heir leads her down a spiral of blame and self-doubt. Arthur, noticing her feelings for Lancelet, tells her that if she has a child with him, he would adopt it as his own. She takes this as an indication of her sin and tells Morgaine she is considering participating in a pagan fertility ritual out of desperation. To calm her down, Morgaine tells Gwenhwyfar that Arthur has a bastard son living in the court of King Lot, swearing her to secrecy.

Worrying that Gwenhwyfar’s love for Lancelet will bring shame to Arthur, Morgaine enchants Lancelet into sleeping with Elaine, the daughter of one of Arthur’s allies. Elaine promises her future daughter in exchange for Morgaine’s role in setting up her marriage. Her daughter, Nimue, eventually trains as a priestess of Avalon.

While Arthur and Gwenhwyfar argue over her infertility, she confesses that Morgaine told her he has a son. Arthur suspects that this is a result of the fertility ritual and confronts Morgaine, who admits that their son, Gwydion, is training to be a priest at Avalon. Both the incest and the training horrify Gwenhwyfar, and she orders Arthur to do public penance with his fanatic bishop, Patricius.

At Camelot’s Pentecost feast, Morgaine enjoys the company of Accolon, a Druid prince from North Wales. His father, King Uriens, asks Arthur for Morgaine’s hand in marriage. Gwenhwyfar, angry at Morgaine’s role in Lancelet’s marriage and wanting to send her away, tells Arthur that Uriens is a valuable ally. When Arthur asks if she would marry Welsh royalty, Morgaine enthusiastically consents, thinking he is referring to Accolon, and must marry Uriens. Morgaine and Accolon have an affair and spread the ways of Avalon throughout North Wales. The pagans in the region regard them as their High Priest and Priestess.

Gwydion visits Camelot after completing his training in Avalon and spending several years learning warfare from the Saxons. He knows his true parentage and wants Arthur to acknowledge him and accept him at court. However, he is rumored to be the bastard son of Lancelet. In order to avoid accusations of favoritism, he challenges Lancelet to a mock fight. Lancelet, impressed by his bravery, knights him as Sir Mordred.

Morgaine, sick of watching Arthur fail to uphold his oath, tells Accolon that they must launch a coup against Camelot. She plans to trap Arthur in the fairy world. However, Arthur breaks out by calling on his devotion to God, and he kills Accolon in combat. Uriens claims that Accolon never would have challenged Arthur without pressure from Morgaine, suspecting their affair. Morgaine is forced to flee Wales.

While in Avalon, Morgaine learns that Kevin, the Merlin of Britain, has stolen some of the Isle’s Holy Regalia with the intention of bringing it to Camelot’s clergy. Kevin believes Avalon’s days are numbered and thinks it is best to make amends with Camelot. Morgaine, in disguise, travels to Camelot to take them back. During a service, Morgaine uses her magic to manifest as the Presence, a symbol of the One God. She carries the Holy Grail throughout the mass, prompting the knights to go on a quest to find it. While they are gone, Mordred takes the opportunity to gain Arthur’s trust before ultimately making a bid for the throne. He mortally wounds Arthur, and Morgaine takes him to Avalon to die in peace. She tells him he did his best to protect Britain and buries him on the Holy Isle. Morgaine remains in Avalon and swears to tell the story of King Arthur and Camelot.

Part 1: “Mistress of Magic”

Prologue Summary

Morgaine reflects on the different roles she has occupied in life and the conflict between Christianity and the ways of magic. She mourns the loss of her brother Arthur, who is currently dead on the Holy Isle of Avalon; Morgaine provided help in his final moments as a “wise-woman, priestess, Lady of the Lake” (x). Morgaine resolves to tell the story of King Arthur, acknowledging that truth can be subjective but feeling that her perspective is important. She understands that Avalon may soon be lost forever, but storytelling can help preserve it within memory.

Part 1, Chapter 1 Summary

Along with her 13-year-old sister Morgause, Igraine, wife of Duke Gorlois of Cornwall, prepares Tintagel Castle for a visit from her older sister, Viviane, and Taliesin, the Merlin of Britain. Igraine has the Sight—the ability to see people who aren’t present or things that haven’t happened yet—but had to abandon it when she married Gorlois. Igraine tolerates Gorlois because he occasionally treats as an equal and has allowed her to keep her infant daughter Morgaine.

Viviane’s arrival marks the first time she and Igraine have seen each other since her marriage to Gorlois.

Gorlois collects Igraine after a sleepless night apart, and they attend Ambrosius’s burial. After the ceremony, Gorlois says he must remind the squabbling council members of Ambrosius’s wishes and gives Igraine money to shop in Londinium. When she returns, a weary Gorlois refuses to disclose what occurred at the debate. As Igraine falls asleep, she dreams of kissing Uther.

Igraine is devastated to get her period, as it means she is not pregnant. She begins to spiral, realizing that her elderly husband may be the reason for her infertility. After several days of sulking in her chambers, she is visited by the Merlin, who tells her that he will send her a dream as a remedy for her ills.

After weeks of debate, Gorlois tells Igraine that Uther will likely be declared High King. It appears that the Merlin’s prophecy is coming true, which leads Igraine to dread losing Gorlois. Unable to sleep, she slips out into the night, where she notices a mountain to her west, completely on fire. She recognizes it as the legendary Temple of the Sun at Salisbury. Igraine hears a man’s voice speaking to her about the temple. It appears to be Uther wearing the robes of an ancient priest.

Part 1: “Mistress of Magic”

Part 1, Chapter 7 Summary

After a brief return to Tintagel, Gorlois leaves again, hoping to ambush Uther’s army. Igraine feels that he is acting irrationally, and that “he would deprive all Britain of her High King […] all because he was not man enough for his wife and feared that Uther would be” (87).

Igraine waits for Uther to find her at Midwinter. On a particularly frigid night, Igraine invites an old peasant woman inside, hoping to gain some idea of the outside world. She says that battle has overtaken Britain, and that the combined chaos of the infighting between the dukes and Saxon invasion has reached the Holy Isle, where she lives. She mentions that Viviane has given birth to a baby boy, Galahad. Viviane says that Galahad, whose father is King Ban of Less Britain, will serve another king’s child, suggesting that Igraine’s fate will come to pass.

Igraine decides to use sorcery to warn Uther. She recalls her brief training at Avalon and projects her soul through the land of dreams. Igraine sees Gorlois’s camp and hears him discussing how the Cornish weather will likely thwart Uther. She is shocked into returning to her physical body at Tintagel.

Viviane and Morgaine arrive at Avalon after a difficult journey. As Viviane struggles to summon the barge that will take them to the island’s shores, she wonders how much strength she has left. She resolves to live until Morgaine and Gwydion are grown, since the fate of Avalon depends on them. They travel through a mysterious landscape. Although Morgaine seems frightened, Viviane says nothing, as she must grow accustomed to discomfort. When the thick fog breaks, Morgaine sees a beautiful land filled with light, music, and magic. She immediately feels at home.

Morgaine and Viviane rest and receive care from a young woman named Raven, who is under a vow of silence. Viviane says that eventually, Morgaine will know if the Goddess has called her. If so, she will take a vow and receive the mark of a moon on her forehead. Morgaine asks what it means to be vowed to the Goddess, and how it differs from the vow Father Columba has taken to Jesus Christ. Viviane reveals that the Christian God is the same omnipresent being, saying “God is called by many names, but is everywhere One […] when you pray to Mary, mother of Jesus, you pray, without knowing it, to the World Mother” (134).

On a moonless night, Morgaine and Raven prepare for a ritual involving the Goddess. Raven begins screaming a prophecy that foretells the “Virgin Huntress” calling “the king to her” and relinquishing “her maidenhood to the God….ah, the old sacrifice, the old sacrifice” (168). Morgaine collapses and feels sick and confused; as she recovers, she considers the meaning of Raven’s words.

Morgaine goes to see Viviane to consult her about Raven’s prophecy. Viviane explains that it is referring to the ancient fertility ritual of the old Tribes, in which the Horned One is given his choice of young maidens to acknowledge the sacrifice King Stag, the strongest deer in a herd, makes by dying for human gain. This custom has evolved into the Great Marriage. This ancient ritual tests a new king, who will need to participate in the Great Marriage with a priestess: Morgaine. Morgaine eventually agrees, recalling when Viviane told her that “it is too heavy a burden to be borne unconsenting” (171).

Part 1, Chapter 15 Summary

Morgaine leaves Avalon to prepare for the Great Marriage with the priestess of the Tribes, who takes her through an elaborate ritual in which she is naked and painted with blue markings. She is then led outside in a deerskin cloak; she can see the outline of the man she is supposed to be with but is only able to tell that he is tall, athletic, and has blond hair.

Viviane reflects on Morgaine’s harsh words, balking at the thought that she could hate her. She wonders if she is actually power hungry but concludes, “What I have done […] I have done to save this land and its people from rapine and destruction, a reversion to barbarism, a sacking greater than Rome suffered from the Goths” (191). She wonders who will be the next ruler of Avalon; she feels that Morgaine is not yet ready because she still resists fate.

As Viviane prays for a longer life to retain her stewardship over Avalon, she sees the shape of a great red dragon in the sky alongside a shooting star. She realizes that Uther has passed, and she takes a moment to mourn him. Shortly after, a Sending of Uther—the same one that appeared to Igraine all those years ago—manifests in her room. He tells her that she must ensure that Arthur is crowned the next High King. Viviane suggests that he will be able to unify them under the name of Avalon, but Uther says it will take more than her magic. Suddenly, the Sending changes into a man that Viviane recognizes from her dreams and realizes “why no man had ever been more to her than duty, or a path to power, or a night’s pleasure” (194): She and Uther were also connected in a past life.

Morgaine has arrived at Orkney, sick from her pregnancy. Morgaine is well taken care of by Morgause and enjoys time with her young nephew Gareth, who hopes to be a knight one day. However, she misses Avalon and has trouble eating and drinking.

Lot and Gareth discuss how Morgaine’s son will be the Duke of Cornwall, since Arthur returned Tintagel to Igraine. Morgause realizes that this places the child closer to the throne than their son, Gawaine. Suddenly, Morgaine goes into labor. As Morgause goes to help her, Lot tells her, “You are quick to bring our Gawaine’s rival into the world!” (243). He remarks that it might be best if she hopes that Morgaine’s son dies at birth.

Morgaine endures a difficult birth, and Morgause questions whether or not she will be able to survive. Morgause, who has a hint of the Sight, knows she is withholding information about the child’s father. She begins to weep, thinking that Morgaine may not survive the birth.

Finally, Morgaine gives birth to a son. As she naps peacefully, Morgause realizes she has the opportunity to kill the young boy but hesitates. If the child’s father is

A year after Arthur makes his request of Igraine, she returns to collect Gwenhwyfar from the Summer Kingdom. Gwenhwyfar is terrified, and though Igraine’s experience with Gorlois makes her empathetic, she is perplexed at how frightened she is given Arthur’s age and kindness. Lancelet accompanies them to escort Leodegranz’s men and horses. As they meet him, he is struggling to arrange the transportation of a large, round table that Leodegranz has given to Arthur to “seat his well-born Companions without preferring one over the other” (267). Igraine escorts Gwenhwyfar to the litter, where she insists on keeping the curtains closed. She notices that every sliver of light and jostle on the road seems to frighten Gwenhwyfar. Gwenhwyfar briefly feels anger at her situation but knows that it is important to “obey her father’s will as if it were the will of God” (267). She spends the rest of the evening fretting about whether or not Arthur will find her beautiful.

Eventually, Igraine suggests that Gwenhwyfar leave the litter to ride with Lancelet, thinking that fresh air will be good for her spirits. Igraine watches the pair from a distance and notices a huge difference in Gwenhwyfar’s temperament and demeanor.

Now one of Gwenhwyfar’s ladies-in-waiting, Morgaine is spinning when she has a vision of blood spilling onto the hearth. A concerned Gwenhwyfar approaches her and asks if her vision was true, but Morgaine assures her it was just a dream. However, Morgaine later predicts that the men will be home in the evening, making Gwenhwyfar skeptical. Gwenhwyfar brushes it off, calling for a great feast for when the men return.

Later in the evening, Arthur returns, disappointed that Gwenhwyfar is not pregnant. The couple has been trying to conceive since their marriage without success. Gwenhwyfar has convinced herself that this is punishment for her secretly coveting Lancelet and for Arthur’s refusal to rule Caerleon under Christianity. As Arthur and Gwenhwyfar prepare for bed, Arthur remarks that Lancelet needs a wife. He suggests Morgaine, which upsets Gwenhwyfar. Angry and disappointed, she tells Arthur he should be ashamed of ruling over a kingdom that supports Druidism. When Arthur reminds her that he has sworn an oath to Avalon and intends to be a king for all people, Gwenhwyfar suggests that he no longer has his priorities in order. She says that people who practice magic are just as barbaric as the Saxons: “The true warfare for a Christian king is only against those who do not follow Christ” (317).

Arthur converts Caerleon into his main military camp. As he strategizes with Lancelet and the other kings, Gwenhwyfar expresses her distaste at Arthur riding under a pagan symbol. She does not believe they should fight on the same side as Avalon, stating that “The Old People are of the enemy, as much as the Saxons, and this will not be a proper Christian land until all those folk are dead or fled into their hills, and their demon gods with them!” (379). Arthur angrily reminds her that he rules for all people. He tells Gwenhwyfar to rest so that she can leave for Camelot in the morning, but she refuses, admitting that she is pregnant.

Gwenhwyfar is allowed to stay in Caerleon. Arthur has promised her that if she bears him a son, he will give her anything, so Gwenhwyfar decides she will ask for his armies to ride under the cross. In preparation, she and Elaine begin working on the banner. When Taliesin visits, She shows him her banner and tells him that she intends for Arthur to adopt it. Taliesin compliments her work, and tells her that like Arthur’s scabbard, it clearly reflects care and prayer.

Gwenhwyfar is plagued with dreams of Morgaine taking her to the Beltane fires to be received by Lancelet. She begs Arthur to ban the ritual, but Taliesin intervenes, saying that the peasants have few other sources of genuine joy and that it would be unfair of Arthur to dictate an individual’s innermost thoughts and beliefs. Gwenhwyfar says that a ruler must use their power to enforce right and wrong.

Arthur leads Gwenhwyfar to the edge of Camelot’s walls. He reflects on his promise and appears apprehensive at his betrayal. Gwenhwyfar is concerned that his head is filled with “pagan nonsense” and reminds him, “[W]hen you turned to the one true God, then did he give you that greatest of victories, so that you drove the Saxons forth from this island for all of time” (427). Arthur says there is no way to guarantee the security of any land forever. As they sit on the wall, they see Kevin riding up to the castle, accompanied by a mysterious figure they eventually recognize as Morgaine, who has been missing for five years. Morgaine does not respond to any questions about where she has been, saying only that she “had ill fortune […] on the road” (429).

Morgause finds herself focused on her cunning and precocious foster son, Gwydion. He demands that she dress in her finest clothing and order the kitchen to make elaborate dishes amuse her, and Morgause wonders if he has the Sight. Her guess is proven to be correct when he heralds the arrival of the Avalon barge, putting his odd requests into context. He comes with her to greet Viviane, Kevin, and Niniane. Kevin has now taken on the title of Merlin of Britain, as Taliesin is too old to do his duties. Niniane has completed her training as a priestess.

The talk turns to Morgaine, and Gwydion asks if they are discussing his mother. Viviane is frustrated, telling Gwydion she knows he has the Sight and that he should not mock it. Viviane tells Morgause that they have come to fetch Gwydion to give him “the ancient teachings and the secret wisdom in Avalon” (468). His background and budding talents suggest that he will be a powerful Druid and great ruler. Viviane tests Gwydion’s control over the Sight and watches as he falls into a trance. He predicts a future of “blood, poured out like the blood of sacrifice on the ancient altars, blood spilt on the throne” (470).

Gwenhwyfar agrees to meet Meleagrant about the dispute over the Summer Country. Morgaine tells Gwenhwyfar not to trust him, but she says that if he is truly her sister he will treat her with respect. When she arrives, she notices that Meleagrant has kept Leodegranz’s hall in poor condition. Unwilling to dine with him, she demands that her escort, Ectorius, take her to her chambers. When they arrive at their destination, Meleagrant suddenly pushes Ectorius down the stairs and locks Gwenhwyfar in a small, dirty room.

Hours pass before Meleagrant returns. Gwenhwyfar tries to escape, and Meleagrant tells her that he intends to take over the kingdom by forcibly marrying her. Gwenhwyfar initially tries to fight back, but when Meleagrant beats and rapes her, she concludes this is punishment for her feelings toward Lancelet: “Oh, but it is no more than I deserve…I who am not a faithful wife, but love another” (515).

Later, Meleagrant storms in, telling Gwenhwyfar to hide. He then collapses, dead from a wound to the head: Morgaine has sent Lancelet to save Gwenhwyfar. Overwhelmed with emotion, she asks Lancelet if he will help her change out of her ruined gown. To her surprise, he begins crying too, kissing her and telling her he is sorry for what she endured.

This will be the first Pentecost feast that Lancelet has attended in two years. Gwenhwyfar and Arthur miss him dearly, and Gwenhwyfar reflects on the sorrow that Morgaine’s actions caused. Arthur tries to comfort her by talking about their future child, saying that Gwenhwyfar might still have children. Gwenhwyfar says they are being punished for their night with Lancelet. She accuses Arthur of loving Lancelet more than he loves her, asking, “Can you say in truth that it was to give me pleasure, or was it for the pleasure of him you loved best of all—?” (547).

Arthur cannot give her a satisfactory answer, and Gwenhwyfar tells him that he should have called his son back from Lothian to live with them. Arthur is confused, informing her that he has no son. Gwenhwyfar tells him what Morgaine told her, and Arthur balks, beginning to put the pieces together. He fetches Morgaine and demands that she tell him if he has a son. As Gwenhwyfar curses Avalon, accusing Arthur of being corrupted by pagan practices, Morgaine admits that she had a son 10 months after the ritual and that he is safe in Avalon. Gwenhwyfar erupts at both of them, telling him Arthur’s secrecy about this has cursed his union with her.

The rising of the supposed Roman Emperor gives Arthur’s Pentecost feast a new weight as an opportunity to fortify his alliances. He also welcomes the chance to see Morgaine, whom he has not seen since her wedding. He proudly talks about Morgaine and Morgause’s duties as queens and near equality with their husbands—a thought that causes Gwenhwyfar to shudder. She still resents what Morgaine did to her and Lancelet.

Morgaine and Uriens present Uwaine to Arthur as a candidate for Companion. Arthur accepts, and Gwenhwyfar is jealous that Morgaine has two sons. Gareth approaches asking for Gwydion, but Morgaine brusquely responds that he is training in Avalon. Gareth asks if he is Lancelet’s son, and Morgaine excuses herself. She then has a hostile confrontation with Kevin, whom she has not seen since Viviane’s death. She calls him a traitor, but he tells her she cannot say that “when Viviane’s high seat is empty in Avalon” (617). Morgaine silently agrees, now understanding that she was given to Arthur in the Great Marriage so that she could influence his mind and policy. Kevin tells her that she must return to Avalon, and she says that she and Accolon are doing the work of the Isle from Uriens’s court.

Part 4: “The Prisoner in the Oak”

Part 4, Chapter 1 Summary

Morgaine is back in North Wales, bored and alone, missing Accolon, whom the Sight told her must gain Arthur’s trust. Morgaine creates a fine dinner for Uwaine, who will be returning from a campaign later in the evening. As the family waits for his arrival, Uriens asks her what she thinks of the oak grove. His priest, Father Eian, wants it razed to discourage pagan behavior. Morgaine convinces him to preserve it, but he tells her that the devout Avalloch may cut it down anyway when he takes the throne.

Uriens is helped to the dining hall, as he is still weak from a fever. To Morgaine’s surprise, Accolon returns with Uwaine. Uwaine tells them of his most recent military endeavor. He hopes that Morgaine can reduce the swelling of a scar on his face so that he might be handsome enough for Shana, a Cornish girl in Arthur’s court. Uwaine wants to marry Shana so that Cornwall and Tintagel will once again be in Morgaine’s hands. Uriens resolves to talk to Arthur about this the next time he sees him.

Part 4: “The Prisoner in the Oak”

Part 4, Chapter 4 Summary

The night before Pentecost, Gwenhwyfar frets over Galahad, who is to be made a knight at the feast. When the guests arrive, Arthur finds Morgaine and Uriens. Uriens tells Arthur that Accolon is now second in line for the throne. Galahad and Lancelet ask how Nimue is, but Morgaine can only say that she is presumed well.

Galahad takes his place between Arthur and Gwenhwyfar, and Arthur tells him he is excited to have him as a knight and a member of the court. The arrival of a mysterious young man who bears an incredible resemblance to Lancelet interrupts them. Morgause escorts the young man and introduces him as Morgaine’s son, Gwydion. Galahad is eager to make friends but takes offense when Gwydion jokes about hating him. Gwenhwyfar can’t help but think of the similarities between Gwydion and Morgaine: “[H]e actually took pleasure in the discomfort of the people around the table […] he was Morgaine’s son, if only in that touch of malice” (690).

The Companions discuss Galahad’s upcoming vigil, and Gwydion remarks that it is a different form of the pagan kingmaking rituals. As Galahad protests, Accolon mentions that he will ensure that they continue when he takes over Uriens’s throne.

As Morgaine prepares for bed, she begins to feel sick. She has a dream of finding a baby and wakes up horrified to realize she is pregnant. Morgaine is past the age where she can safely give birth and it is all too likely that the child is Accolon’s. Questioned about her lack of appetite at breakfast, she simply says she had too much wine to drink and excuses herself.

Kevin visits her in her chambers, telling her she was wrong to reproach Arthur about Excalibur. He tells her that since all Gods are one, Christianity has a place alongside Druidism. Morgaine retorts that Christianity has no tolerance for any of the other Gods. Kevin says this thinking is a symptom of a “deep change in the way men now look at the world, as if one truth should drive out another—as if whatever is not their truth, must be falsehood” (726). Morgaine disagrees, saying that Christianity’s intolerance will rid the world of any truth besides their own. Kevin asks her to put their differences aside and says that he will always love her. He tells her that the Goddess made Arthur king, and that if he was truly offending her will, she would remove his title.

Nimue begins the slow work of gaining Kevin’s trust. Since she spent most of her time in Avalon in seclusion, she is confident that he will not recognize her. She believes that as a beautiful young woman, she will easily seduce him and enact Morgaine’s plan. To her surprise, however, she forms a genuine connection with him, bonding over a shared love of music. However, Nimue remains determined and tells Kevin to meet her outside during the New Moon so that they can have sex. Kevin, being trained in the ways of Avalon, knows this time is significant but is too enamored to care. She is able to trick him into saying he is hers the moment the moon changes, which puts him in a trance. Nimue feels triumphant at her accomplishment but genuinely broken-hearted at the thought that she did such a cruel thing to someone she came to love.

Before Kevin is confined to the oak tree, he tells Morgaine that he has acted for the Goddess. He explains that “the day of Avalon is ended. […] Would you then take the Holy Regalia with you into that darkness, preserving it carefully against the dawning of a new day that now shall never be?” (800).

With the Companions on their respective Grail quests, Arthur stalks the castle. He worries that none of them will return but takes comfort in the presence of Mordred and Cai, who was too old to seek the Grail. Arthur asks Mordred to be the captain of his horses in Lancelet’s absence. Mordred tells Arthur that Camelot’s wartime achievements will cement its legacy. He asks for permission to seek horses from Spain and Africa, and Arthur briefly wonders if he is giving him too much power. Gwenhwyfar accuses Arthur of setting up Mordred for the throne, but he reminds her that the priests would not accept him due to his parentage. However, he asks if “it be better that no good of any kind should come from the sin [he] did with Morgaine” or if he should “be grateful that, since the sin was done and there’s no going back to innocence, God has given [him] a good son in return for that evil?” (833). He believes that Mordred will make a good king one day.

Slowly but surely, the knights begin returning. Many

had visions dissuading them from seeking out the

Grail. 

Literature Sample



was the memory of her dream, Morgaine was tempted to step inside … she could hardly believe she would not see
Lancelet there, struck down by the magical brilliance of the Grail … but no. She had no business there, and she
would not intrude on their God; and if indeed the Grail was there, it had gone beyond her reach.

Yet the dream remained with her. Had it been sent as a warning? Lancelet was younger than she herself was … she
knew not how time ran in the outer world. Avalon, now, had gone so far into the mists that it might be with Avalon as
it had been with the fairy country when she was young -while a single year passed within Avalon, three or five or
even seven years might have run by in the outer world. And so what it had come to her to do should be done now,
while she could still come and go between the worlds.

She knelt before the Holy Thom, whispering a soft prayer to the Goddess, and asking leave of the tree; then she cut a
slip for planting. It was not the first time: in these last years, whenever one had come to Avalon and returned to the
outside world, wandering Druid or pilgrim priest … for a few of them could still come to the ancient chapel on
Avalon … she had sent with him a slip of the Holy Thom, so that it might still blossom in the world outside. But this
she must do with her own hands.

Never, except at Arthur’s crowning, had she set foot on the other island … except, perhaps, for that day when the
mists had opened, and Gwenhwy-far had somehow fallen or wandered through. But now, deliberately, she called the
barge, and when it was out in the Lake, sent it into the mists, so that when it glided forth into the sunlight again, she
could see the long shadow of the church lying over the Lake, and hear the soft tolling of a bell. She saw her followers
shrink from the sound, and knew that here, too, they would not follow her, nor set foot. So be it, then; the last thing
she wished for was to have the priests on that isle staring in fear and dread at the barge from Avalon. Unseen, they
glided toward the shore and unseen she stepped onto the land, watching the black-draped barge vanish again into the
mists. And then, the basket over her arm-like any old market woman or peddler come here on pilgrimage, she
thought- she went silently up the path from the shore.

Only a hundred years or less, certainly less in Avalon, that these worlds have diverged; yet already the world here is
different. The trees were different, and the paths, and she stopped, bewildered, at the foot of a little hill-surely there
was nothing like this on Avalon? She had somehow thought the land would be the same, only the buildings different,
for they were, after all, the same island, separated only by some magical change … but now she saw that they were
very different.

And then she saw, winding down the hill toward the little church, a procession of robed monks, and they bore with
them, toward the church, a body on its bier.

So I saw truly, then, even though I thought it a dream. She stopped, and as the monks brought the body to rest before
taking it into the church, she went forward and drew back the pall from the dead face.

Lancelet’s face was drawn and lined, far older than when they had parted … she did not want to think how much
older. But she saw that only for a moment; then what she saw on his face was only the sweet and marvelous look of
peace. He lay smiling, looking so far beyond her that she knew on what his dying eyes had rested.

She whispered, “So at last you found your Grail.”

One of the monks who carried him said, “Perhaps you knew him in the world, sister?” and she knew that in her dark
garb, he thought her one of them.

“He was a-a kinsman of mine.”

Cousin, lover, friend … but that was long ago. At the end we were priestess and priest.

“I thought as much,” said the monk, “for they called him Lancelet at the court of Arthur, in the old days, but here
among us we called him Galahad. He had been with us for many years, and he was made priest but a few days ago.”
So far you came in your search for a God who would not mock you, my cousin!

The monks who carried him raised him again to their shoulders. The one who had spoken with her said, “Pray for his
soul, sister,” and she bowed her head. She could not feel grief; not now, when she had seen the reflection of that
faraway light on his face.

But she would not follow him into the church. Here the veil is thin. Here Galahad knelt, and saw the light of the Grail
in the other chapel, the chapel on Avalon, and reached for it, reached through the worlds, and so died … .

And here at last Lancelet has come to follow his son.

Morgaine walked slowly along the path, half ready to abandon what she had come to do. What difference did it make
now? But as she paused, irresolute, an old gardener, kneeling at one of the beds of flowers behind the path, raised his
head and spoke to her. “1 know you not, sister, you are not one of those who dwell here,” he said. “Are you a
pilgrim?”

Not as the man thought; but so she was, in a way. “I seek the burial place of my kinswoman-she was the Lady of the
Lake-”

“Ah yes, that was many, many years ago, in the reign of our good King Arthur,” he said. “It lies yonder, where
pilgrims to the island may see it. And from it, the path leads up to the convent of the sisters, and if you are hungry,
sister, they will give you something to eat there.”

Has it come to this, that I look like a beggar? But the man had meant no harm, so she thanked him, and walked in the
direction he had pointed out.

Arthur had built for Viviane a noble tomb indeed. But what lay there was not Viviane; nothing lay there but bones,
slowly returning to the earth from which they had come … and all things at last give up their body and their spirit
into the keeping of the Lady again … .

Why had it made so much difference to her? Viviane was not there. Yet when she stood with bent head before the
391



cairn, she was weeping.

After a time, a woman in a dark robe not unlike her own, with a white veil over her head, approached her. “Why do
you weep, sister? She who lies here is at peace and in God’s hands, she has no need of mourning. But maybe she was
one of your kin?”

Morgaine nodded, bending her head against the tears.

“We pray always for her,” said the nun, “for, though I do not know her name, she was said to be the friend and
benefactor of our good King Arthur in the days that were gone.” She lowered her head and murmured some prayer or
other, and even as she prayed, bells rang out, and Morgaine drew back. So, in place of the harps of Avalon, Viviane
had only these clanging bells and doleful psalms?

Never did I think I would stand side by side with one of these Christian nuns, joining with her in prayer. But then she
remembered what Lancelet had said in her dream.

Take this cup, you who have served the Goddess. For all the Gods are One …

“Come up to the cloister with me, sister,” said the nun, smiling and laying a hand on her arm. “You must be hungry
and weary.”

Morgaine went with her to the gates of their cloister, but would not go in. “I am not hungry,” she said, “but if I might
have a drink of water-”

“Of course.” The woman in black beckoned, and a young girl came and brought a pitcher of water, which she poured
into a cup. And she said, as Morgaine lifted it to her lips, “We drink only the water of the chalice well-it is a holy
place, you know.”

It was like Viviane’s voice in her ears: The priestesses drink only the water of the Sacred Well.

The nun and the young girl, robed in black, turned and bent their heads before a woman who came from the cloister,
and the nun who had guided her said, “This is our abbess.”

Morgaine thought, Somewhere I have seen her. But even as the thought crossed her mind, the woman said,
“Morgaine, you do not know me? We thought you long dead … ”

Morgaine smiled at her, troubled. “I am sorry-I do not-”

“No, you would not remember me,” said the abbess, “though I saw you, now and again, at Camelot; 1 was so much
younger. My name is Lionors. I was married to Gareth, and when all my children were grown, I came here-here to
end my days. Did you come to Lancelet’s funeral, then?” She smiled and said, “I should indeed have said Father
Galahad, but it is hard to remember, and now he is in Heaven it will not matter.” She smiled again. “I know not now
even who is King, or whether Camelot still stands-there is war in the land again, it is not as it was in Arthur’s time.
That all seems so very long ago,” she added with detachment.

“I came here to visit Viviane’s grave. She is buried here-do you remember?”

“I have seen the tomb,” said the abbess, “but it was before ever I came to Camelot.”

“I have a favor to beg of you,” Morgaine said, and touched the basket on her arm. “This is the Holy Thom that grows
on the hills of Avalon, where it is said that the foster-father of Christ struck his staff into the ground and it blossomed
there. I would plant a cutting of this thorn tree on her grave.”

“Plant it if you will,” said Lionors. “I cannot see how anyone could object to that. It seems right to me that it should
be here in the world, and not hidden away in Avalon.”

She looked at Morgaine, dismayed.

“Avalon! Have you come here from that unholy land?”

Morgaine thought. Once I would have been angry with her. “Unholy it is not, whatever the priests say, Lionors,” she
said gently. “Think-would the foster-father of Christ have stmck his staff there if the land had seemed to him evil? Is
not the Holy Spirit everywhere?”

The woman bowed her head. “You are right. I will send novices to help you with the planting.”

Morgaine would sooner have been alone, but she knew it was a kindly thought. The novices seemed no more than
children to Morgaine, girls of nineteen or twenty, so young that she wondered-forgetting that she herself had been
made priestess when she was eighteen-how they could possibly know enough of spiritual things to choose lives like
this. She had thought nuns in Christian convents would be sad and doleful, ever conscious of what the priests said
about the sinfulness of being bom women, but these were innocent and merry as robins, talking gaily to Morgaine of
their new chapel and bidding her rest her knees while they dug the hole for the cutting.

“And it is your kinswoman who is buried here?” asked one of the girls. “Can you read what it says? I never thought I
would leam to read, for my mother said it was not suitable, but when I came here, they told me 1 must be able to read
in the mass book, and so now 1 can read in Latin! Look,” she said proudly, and read: ” ‘King Arthur made this tomb
for his kinswoman and benefactress, the Lady of the Lake, slain by treachery at his court in Camelot’-I cannot read
the date, but it was a long time ago.”

“She must have been a very holy woman,” said another of the girls, “for Arthur, they say, was the best and the most
Christian of all kings. He would never have had any woman buried here unless she was a saint!”

Morgaine smiled; they reminded her of the girls in the House of Maidens. “I would not call her a saint, though I loved
her. In her day, there were those who called her a wicked sorceress.”

“King Arthur would never have a wicked sorceress buried here among holy people,” said the girl. “And as for
sorcery-well, there are ignorant priests and ignorant people, who are all too ready to cry sorcery if a woman is only a
little wiser than they are! Are you going to stay and take the veil here, Mother?” she asked, and Morgaine, for a
moment startled at the word, realized that they were speaking to her with the same deference and respect as any of

392




her own maidens in the House of Maidens, as if she were an elder among them.

“I am vowed elsewhere, my daughter.”

“Is your convent as nice as this one? Mother Lionors is a kind woman,” the girl said, “and we are all very happy here-
once we had a woman among our sisters who had been a queen. And I know we will go to Heaven, all of us,” said the
girl with a smile, “but if you have taken vows elsewhere, I am sure that is a good place, too. Only I thought you might
perhaps want to stay here, so that you could pray for the soul of your kinswoman who lies buried here.” The girl rose
and dusted off her dark dress. “Now you may plant your cutting, Mother … or would you like me to set it in the
earth?”

“No, I will do it,” said Morgaine, and knelt to press the soft soil around the roots of the plant. As she rose, the girl
said, “If you wish, Mother, I will promise to come here and say a prayer every Sunday for your kinswoman.”

For some absurd reason, Morgaine felt that tears were coming to her eyes. “Prayer is always a good thing. I am
grateful to you, daughter.”

“And you, in your convent, wherever it may be, you must pray for us too,” said the girl simply, taking Morgaine’s
hand as she rose. “Here, Mother, let me brush the dirt from your gown. Now you must come and see our chapel.”

For a moment Morgaine was inclined to protest. She had sworn when last she left Arthur’s court that she would never
again enter any Christian church; but this girl was so much like one of her own young priestesses that she would not
profane the name by which the girl knew her God. She let the girl lead her inside the church.

In that other world, she thought, that church where the ancient Christians worship must stand on this very spot; some
holiness from Avalon must surely come through the worlds, through the mists … she did not kneel or cross herself,
but she bent her head before the high altar of the church; and then the girl tugged gently at her hand.

“Come,” she said. “The high altar is of God and I am a little afraid here always … but you have not seen our chapel-
the sisters’ chapel … come, Mother.”

Morgaine followed the young girl into the small side chapel. There were flowers here, armfuls of apple blossom,
before a statue of a veiled woman crowned with a halo of light; and in her arms she bore a child. Morgaine drew a
shaking breath and bowed her head before the Goddess.

The girl said, “Here we have the Mother of Christ, Mary the Sinless. God is so great and terrible I am always afraid
before his altar, but here in the chapel of Mary, we who are her avowed virgins may come to her as our Mother, too.
And look, here we have little statues of our saints, Mary who loved Jesus and wiped his feet with her hair, and
Martha who cooked dinner for him and scolded her sister when she would not cook with her -I like to think of Jesus
when he was a real man who would do something for his mother, when he changed the water into wine at that
wedding, so she wouldn’t be unhappy because there wasn’t enough wine for everyone. And here is a very old statue
that our bishop gave us, from his native country … one of their saints, her name is Brigid … ”

Morgaine looked on the statue of Brigid, and she could feel the power coming from it in great waves that permeated
the chapel. She bowed her head.

But Brigid is not a Christian saint, she thought, even if Patricius thinks so. That is the Goddess as she is worshipped
in Ireland. And I know it, and even if they think otherwise, these women know the power of the Immortal. Exile her
as they may, she will prevail. The Goddess will never withdraw herself from mankind.

And Morgaine bowed her head and whispered the first sincere prayer she had ever spoken in any Christian church.
“Why, look,” said the novice, as she brought her out of doors into the daylight, “we have one of the Holy Thom here
too, not the one you planted on your kinswoman’s grave.”

And I thought I could meddle in this? Morgaine thought. Surely, the holy thing had brought itself from Avalon,
moving, as the hallows were withdrawn from Avalon, into the world of men where it was most needed. It would
remain hidden in Avalon, but it would be shown here in the world as well. “Yes, you have the Holy Thom, and in
days to come, as long as this land shall last, every queen shall be given the Holy Thorn at Christmas, in token of her
who is queen in Heaven as in Avalon.”

“I don’t know what you are talking about, Mother, but thank you for your blessing,” said the young novice. “The
abbess is awaiting you in the guesthouse-she will take breakfast with you. But would you like, perhaps, to stay in the
Lady’s chapel first and pray awhile? Sometimes when you are alone with the Holy Mother, she can make things clear
to you.”

Morgaine nodded, unable to speak, and the girl said, “Very well. When you are ready, just come to the guesthouse.”
She pointed, and Morgaine went back into the chapel and bowed her head, and giving way at last, sank to her knees.
“Mother,” she whispered, “forgive me. I thought I must do what I now see you can do for yourself. The Goddess is
within us, yes, but now I know that you are in the world too, now and always, just as you are in Avalon and in the
hearts of all men and women. Be in me too now, and guide me, and tell me when I need only let you do your will …

She was silent, kneeling, for a long time, her head bowed, but then, as if compelled, she looked up, and as she had
seen it on the altar of the ancient Christian brotherhood in Avalon, as she had seen it when she bore it in Arthur’s hall,
she saw a light on the altar, and in the Lady’s hands- and the shadow, only the shadow, of a chalice …

It is in Avalon, but it is here. It is everywhere. And those who have need of a sign in this world will see it always.
There was a sweet scent that did not come from the flowers; and for an instant it seemed to Morgaine that it was
Igraine’s voice that whispered to her … but she could not hear the words … and Igraine’s hands that touched her
head. As she rose, blinded by tears, suddenly it rushed over her, like a great light.

No, we did not fail. What I said to comfort Arthur in his dying, it was all true. I did the Mother’s work in Avalon until
393



at last those who came after us might bring her into this world. 1 did not fail. I did what she had given me to do. It
was not she but I in my pride who thought I should have done more.

Outside the chapel, sunlight lay on the land, and there was a fresh scent of spring in the air. Where the apple trees
moved in the morning breeze, she could see the blossoms that would bear fruit in their season.

She turned her face toward the guesthouse. Should she go there and breakfast with the nuns, speak perhaps of the old
days at Camelot? Morgaine smiled gently. No. She was filled with the same tenderness for them as for the budding
apple trees, but that time was past. She turned her back on the convent and walked down to the Lake, along the old
path by the shore. Here was a place where the veil lying between the worlds was thin. She needed no longer to
summon the barge-she need only step through the mists here, and be in Avalon.

Her work was done.

The post Write up on Marion Zimmer Bradley’s The Mists of Avalon  appeared first on DayDreamin’ Comics.

]]>
https://ddcomics.org/2026/05/23/write-up-on-marion-zimmer-bradleys-the-mists-of-avalon/feed/ 0 6732
Write up on Black Goliath “African American” Historical Records https://ddcomics.org/2026/05/17/write-up-on-black-goliath-african-american-historical-records/ https://ddcomics.org/2026/05/17/write-up-on-black-goliath-african-american-historical-records/#respond Sun, 17 May 2026 15:50:14 +0000 https://ddcomics.org/?p=6718 Literature Review Growing up in the Los Angeles ghetto of Watts, Foster gets out by going to the California Technical Institute and subsequently lands a job at Stark Industries in Baltimore. Later, when Henry Pym becomes “trapped at a height of 10 feet because of an unstable growing serum,” biochemist Foster comes to his aid. Perfecting the […]

The post Write up on Black Goliath “African American” Historical Records appeared first on DayDreamin’ Comics.

]]>
Literature Review

Growing up in the Los Angeles ghetto of Watts, Foster gets out by going to the California Technical Institute and subsequently lands a job at Stark Industries in Baltimore. Later, when Henry Pym becomes “trapped at a height of 10 feet because of an unstable growing serum,” biochemist Foster comes to his aid. Perfecting the serum, he uses it to duplicate Pym’s growth powers. With a nudge from Pym, Foster decides to become a costumed crimefighter and keep the streets of Los Angeles safe for regular size folk.

Bill Foster was born in Watts, Los Angeles, California. Biochemist Dr. Bill Foster worked in the Plans and Research Division for Tony Stark’s Baltimore factory. He was hired to be the lab assistant of Dr. Hank Pym (aka Giant-Man). Pym was stuck at the height of ten feet for a time and Dr. Foster helped him find a cure to change his size back to normal.

Dr. Foster moved to the West Coast and at some point acquired the formula to “Pym particles” which gave him the ability to grow in size like his former employer. Taking the name Black Goliath, he came under the control of the Circus of Crime, but was freed by Luke Cage who had come to rescue Claire Temple, Foster’s ex-wife and now Cage’s girlfriend. As Black Goliath he fought criminals such as Atom Smasher, Warhawk, Stilt-Man and the Hijacker. Black Goliath later assisted the Champions of Los Angeles, then joined the group part-time as their technical advisor. After the Champions disbanded, Black Goliath, along with a large group of other heroes, joined the Defenders for only one mission before quitting the group.

Dr. Foster later joined the staff of Project Pegasus, the U.S. government’s semi-secret energy research facility. While there he revealed his identity of Black Goliath to the Thing, who at the time was working for Project: Pegasus. In the process of answering an emergency alarm, Foster decided to change his name to Giant-Man at Ben’s suggestion. After working at Project: Pegasus for a short time Foster revealed that he was dying from radiation poisoning he contracted in his earlier fight with Atom-Smasher. Some time later, while on his death bed, Foster’s radiation poisoning was cured by a blood transfusion from Spider-Woman, who at the time was immune to radiation, but lost that immunity after giving Foster the transfusion.

After being cured, Foster gave up the Giant-Man identity for a long time. He finally returned as Giant-Man when he assisted the West Coast Avengers in their battle against the High Evolutionary in the Savage Land during the Evolutionary War. Giant-Man later defeated Ant-Man’s old foe Doctor Nemesis and Goliath in their scheme.

Foster soon gave up the Giant-Man identity and Hank Pym subsequently took it back for himself. Not too long after that, Goliath’s ionic powers were disrupted in a battle against the West Coast Avengers. This caused an energy disruption which allowed a race of extra-dimensional creatures, the Kosmosians, to attack Earth. Although the creatures were ultimately repelled, the energy disruption and effects on the Pym Particles affected all who had ever been exposed to them, except Pym himself, causing them to lose control of their growth and/or shrinking powers.

After losing his powers, Dr. Foster joined the staff of the Centers for Disease Control. In this capacity he helped the Avengers deal with a bio-weapon released near Mount Rushmore.

Foster donned the identity of Goliath again (along with a new costume and without the modifying “Black”) to first help the Thing deal with a supervillain (along with hitting him up for a research grant), then helped Spider-Man track down the Hulk in order for Bruce Banner to possibly deal with Spidey’s cellular degeneration.

During the superhuman Civil War, Foster was a member of Captain America’s anti-registration Secret Avengers, adopting the alias of Rockwell Dodsworth. He subsequently appeared briefly amongst the cavalcade of other African-American super-heroes attending the wedding of the Black Panther and Storm.

Foster was killed by a clone of Thor during a battle between the Secret Avengers and Iron Man’s pro-registration forces. Since it wasn’t possible to reduce his body to normal size, he was buried as a giant, with Tony Stark (Iron Man) paying for the thirty-eight burial plots required to accommodate him. His death affected the balance of forces in the war, leading several previously pro-Registration figures to change sides, most notably the Invisible Woman, the Human Torch, the Black Panther, Storm and Spider-Man as well as many others questioning Iron Man’s cause.

Bill Foster was last seen in Pluto’s realm, refusing to accept death’s embrace while holding out possible hope for a resurrection.

Biochemistry: Bill Foster is an expert in the field of Biochemstry sometimes called biological chemistry, and is the study of chemical processes within and relating to living organisms. He has Amazing Reason in the field and is considered a peer to Hank Pym and Reed Richards, much like his nephew Tom.

Medicine: Bill, due to the cancer that he had for a while, studied medicine and has Remarkable Reason in the field of medicine, prescription drugs and surgery. Should he have to render first aid to someone he can stop a character that has reached ‘0’ health from losing any more endurance ranks and keep them stable.

Military: Bill was once in the military, evidently it wasn’t to his liking so he used the G.I. bill to go to college and get his degrees. Despite that fact he has Excellent Reason in when it came to protocol, regulations and equipment used by the U.S. military.

Black Goliath was Bill Foster – described as “a child of the ghetto who has pulled himself out of the Los Angeles slums to become director of one of the nation’s most prestigious research labs” and who could now turn himself into a 15-foot-giant. He first appeared in a few Avengers issues as a civilian back in the 1960s before turning up with super-growing powers in a few issues of Luke Cage, Power Man. 

But his hyped 1976 solo comic lasted a mere five issues, failing to ever get out of first gear. He fought nondescript villains like “Atom Smasher” and “Vulcan” (plus the towering Stilt-Man, which was actually a pretty clever match-up) and plotlines were teased but never fully explored. 

Black Goliath never quite got a chance. After his series was cut short, Black Goliath briefly popped up as a member of second-tier superhero team The Champions before they too got cancelled. 

Years later, Foster turned up as a supporting character in Marvel Two-In-One starring The Thing, where he was slowly dying from radiation poisoning and eventually cured. It was at this point he changed his hero name from Black Goliath to plain Giant-Man, at the Thing’s suggestion. “I mean, it’s pretty obvious that you’re black – and if I remember my Sunday school lessons, Goliath was a bad guy,” he noted. 

He moped around for a while, but Black Goliath/Giant-Man’s defining characteristic in his appearances always seemed to be that he never made the ‘big time.’ He tended to lose fights a lot. Too much of the time he appeared, his major defining characteristic was an inferiority complex, which was a bummer – as a successful Black biochemist in that era, Bill Foster could have been written a bit more uplifting (literally and figuratively). 

Kind of like another favourite obscure 1970s hero fave of mine, Omega The Unknown, Black Goliath is kind of a failure at the job. 

The post Write up on Black Goliath “African American” Historical Records appeared first on DayDreamin’ Comics.

]]>
https://ddcomics.org/2026/05/17/write-up-on-black-goliath-african-american-historical-records/feed/ 0 6718
Write up on T.H.U.N.D.E.R Agents 1965 https://ddcomics.org/2026/05/17/write-up-on-t-h-u-n-d-e-r-agents-1965/ https://ddcomics.org/2026/05/17/write-up-on-t-h-u-n-d-e-r-agents-1965/#respond Sun, 17 May 2026 15:42:26 +0000 https://ddcomics.org/?p=6712 Literature Review THUNDER Agents premiered in 1965 and was an attempt to cash in on two of the biggest trends in popular culture at the time: super heroes and spies. (If the creators could have found a way to work Beatles music into the series, I’m sure they would have.) It was published by Tower, […]

The post Write up on T.H.U.N.D.E.R Agents 1965 appeared first on DayDreamin’ Comics.

]]>
Literature Review

THUNDER Agents premiered in 1965 and was an attempt to cash in on two of the biggest trends in popular culture at the time: super heroes and spies. (If the creators could have found a way to work Beatles music into the series, I’m sure they would have.) It was published by Tower, a newcomer to the industry, one of the short-lived companies who tried to stake out a position in the market due to the heightened interest in super heroes. They and the series only lasted about four years, shuttering quietly in 1969 after 20 issues of THUNDER AGENTS and assorted other comics. One of the things that set the Tower releases apart from much of the market was the fact that they insisted in releasing their books in the oversized “annual” format and priced at a quarter, more than twice what a regular comic book cost at that time. This can’t have helped them in terms of parting kids from their loose change. But it does mean that every issue of THUNDER AGENTS was a cornucopia of good art and fun stories.

THUNDER AGENTS opened on a simple premise: mankind is under siege by a mysterious figure known as the Warlord, who possesses an army of shock troops and super-scientific technology. it will turn out in the issues ahead that he was the leader of a subterranean civilization that desired the surface world. To meet this threat, the nations of the world had formed T.H.U.N.D.E.R.: The Higher United Nations Defense Enforcement Reserve. THUNDER was the GIJOE to the Warlord’s Cobra Commander. The organization was well-financed and began to develop super-weapons of their own to counter the Warlord’s schemes. But before anything more than the prototype devices could be created, Professor Jennings is killed in a Warlord attack–leaving THUNDER with a trio of devices designed to give its operatives superhuman abilities, but no way to duplicate or mass-manufacture them. As such a trio of THUNDER’s operatives are selected to be the group’s super-agents and put their lives on the line to use Jennings’ discoveries to battle back the enemy.

The most popular of the THUNDER Agents, and Wood’s favorite (and the character whose strip he most often worked on) was Dynamo. He’d intended to be called Thunderbolt, but the release of Charlton’s character of that same name scotched those plans. Dynamo was Len Brown (named after his scriptwriter by Wood), a working class stiff who was nonetheless a secret agent for THUNDER who was given a transformative belt that would give him superhuman strength and durability for 30 minutes at a go. Wood cast him very much in the style of the early Joe Shuster Superman, and delighted at having Dynamo tear through a horde of enemies or evidence his spectacular strength and durability. The second THUNDER Agent was perhaps the most unique.

 This was NoMan, himself an ancient scientist, the head of a program to develop artificial android bodies. His mind was not only transferred into one of these bodies, but it could switch freely between them–making him functionally immortal so long as he had another android form to move his consciousness into. NoMan was also given an invisibility cloak from the stash of gizmos that Professor Jennings had developed, to increase his effectiveness (although only one android body could wear the cloak at any given time–so if it got pulverized, as NoMan’s bodies generally tended to be, the cloak would need to be retrieved.)

THUNDER AGENTS opened on a simple premise: mankind is under siege by a mysterious figure known as the Warlord, who possesses an army of shock troops and super-scientific technology. it will turn out in the issues ahead that he was the leader of a subterranean civilization that desired the surface world. To meet this threat, the nations of the world had formed T.H.U.N.D.E.R.: The Higher United Nations Defense Enforcement Reserve. THUNDER was the GIJOE to the Warlord’s Cobra Commander. The organization was well-financed and began to develop super-weapons of their own to counter the Warlord’s schemes. But before anything more than the prototype devices could be created, Professor Jennings is killed in a Warlord attack–leaving THUNDER with a trio of devices designed to give its operatives superhuman abilities, but no way to duplicate or mass-manufacture them. As such a trio of THUNDER’s operatives are selected to be the group’s super-agents and put their lives on the line to use Jennings’ discoveries to battle back the enemy.

The most popular of the THUNDER Agents, and Wood’s favorite (and the character whose strip he most often worked on) was Dynamo. He’d intended to be called Thunderbolt, but the release of Charlton’s character of that same name scotched those plans. Dynamo was Len Brown (named after his scriptwriter by Wood), a working class stiff who was nonetheless a secret agent for THUNDER who was given a transformative belt that would give him superhuman strength and durability for 30 minutes at a go. Wood cast him very much in the style of the early Joe Shuster Superman, and delighted at having Dynamo tear through a horde of enemies or evidence his spectacular strength and durability. The second THUNDER Agent was perhaps the most unique. This was NoMan, himself an ancient scientist, the head of a program to develop artificial android bodies. His mind was not only transferred into one of these bodies, but it could switch freely between them–making him functionally immortal so long as he had another android form to move his consciousness into. NoMan was also given an invisibility cloak from the stash of gizmos that Professor Jennings had developed, to increase his effectiveness (although only one android body could wear the cloak at any given time–so if it got pulverized, as NoMan’s bodies generally tended to be, the cloak would need to be retrieved.)

The third THUNDER Agent was John Janus, a top-of -the-line cadet who earned the right to wield Professor Jennings’ mental command helmet in the guise of Menthor. But it turned out that THUNDER’s screening process wasn’t all it was cracked up to be. Janus was secretly an agent of the Warlord, infiltrating the organization to destroy it from within. (his name might have been a tip-off to them.) However, whenever he would don the Menthor helmet, his demeanor would change, and he’d become a thorough good guy, dedicated to bringing down the Warlord and his forces. This dual personality was swiftly abandoned in subsequent stories, which is a shame–it was probably the most interesting thing about the character. He was the least successful of the initial THUNDER Agents, and in a shocking turn of events for the time, he was killed off for real in issue #7, giving his life to protect his fellow super-agents from harm. The fourth strip in the initial book was THUNDER Squad, which featured a non-powered team of THUNDER Agents very much in the mode of the Challengers of the Unknown or the Howling Commandos. There were five of them, each one a broadly-drawn type: Guy, the leader, Dynamite, the kinda dim big guy, Egghead, the brain, Kitten, the girl, and Weed, the slightly weaselly safecracker and escape artist. Their series was the least popular thing in the magazine, and so in issue #4, Guy was given an acceleration costume that turned him into the fourth super-agent, super-swift Lightning.

The thing that really set THUNDER AGENTS apart from the other titles on the stands in the mid-1960s was the quality of the artwork. Led by Wood himself, this first issue included contributions from Reed Crandall, Gil Kane, George Tuska, Mike Sekowsky, and Dan Adkins, and future issues would include stories by Steve Ditko, Manny Stallman, Ogden Whitney, Paul Reinman and many others. The focus here was on art over story–the THUNDER Agents stories tended to be less wordy than the Marvel books of the same period. This first issue laid out the origin of each of the main THUNDER Agents in solo adventures, then brought them all together for the climax (in the manner of a Justice Society story in ALL-STAR COMICS) to rescue the fallen Dynamo, who had been captured by the Warlord’s right-hand woman, the Iron Maiden. She was one of the best-remembered female characters from this age, a true femme fatale who contended with Dynamo and the THUNDER Agents on several occasions and was popular enough on her own that she could have headlined her own series. Needless to say, this initial issue made me a full-on fan of the THUNDER Agents, and I went on to collect the entire series over the course of the next couple of years. This was a great comic book end to end.

                            T.H.U.N.D.E.R. Agents

Run: 20 issues

T.H.U.N.D.E.R. is an acronym for The Higher United Nations Defense Enforcement Reserves. They were founded after World War II to deal with secret, subversive threats that the above-board United Nations forces couldn’t handle.

Our adventure begins when agents of T.H.U.N.D.E.R. try to save a brilliant scientist, Dr. Jennings, from “enemy agents.” They fail, but Jennings left behind a bunch of fancy gadgets, including a power belt, a cloak of invisibility, and a mind control helmet. T.H.U.N.D.E.R. distributes these gadgets to its finest agents, creating a small super-powered army to fight foes like the Subterraneans, an underground civilization rightfully upset about atomic weapons testing destroying their city, and S.P.I.D.E.R., an evil counterpart to T.H.U.N.D.E.R..

Jennings also left no instruction manual, so the agents have to figure things out as they go along, which is always fun.

Each issue featured multiple stories starring different agents, including:

Menthor

Menthor, despite the stupid name, had the most potential as a character. He was originally a double agent sent by the villainous Warlord, but the power of the mind-reading helmet he was given tapped into the goodness within him, turning him into a good guy whenever he put the helmet on. When he took it off, he forgot everything and reverted to low-level lackey John Janus.

Unfortunately, they squandered this concept’s potential right away. By Issue 2, Janus became a real good guy and defected to T.H.U.N.D.E.R.. He apparently wasn’t all that popular among fans as he was killed off at the end of Issue 7. His death was pretty brutal by 1966 standards, too: he was shot multiple times and then electrocuted. Yowch.

But did he smell minty fresh?

Raven

After Menthor’s death, he was semi-replaced by the Raven, a mercenary who joined mostly to get his hands on some flying tech that he could sell to the bad guys. After being rescued by the agents, he instantly reformed. That sounds familiar.

Raven’s stories are bizarre compared to the other features in this comic: the art style and tone are markedly different. His first foe is Mayven, a woman who controls child-shaped dolls that explode. If you’re into the weirder ’60s art styles, this may be the feature for you.

T.H.U.N.D.E.R. Squad

The T.H.U.N.D.E.R. Squad is basically Mission: Impossible with fewer Black people — in other words, they’re spies, not superheroes. The team did not have powers, but they did have some amazing names: Guy, Egghead, Dynamite, Kitten, and Weed. Weed.

Dynamo

Run: 4 issues

Len Brown — which is also the name of the writer who co-created the book with Wally Wood — was a young T.H.U.N.D.E.R. agent who became the recipient of a power-bestowing belt. Said belt granted him superior density, strength, and durability for up to half an hour at a time.

While Dynamo is physically the strongest, he is young and hot-headed and therefore susceptible to mental attacks. He could also be lazy, and he was perpetually embroiled in a love triangle (or rather, a love pentagon) with good-girl secretary Alice and various femmes fatale.

I count references to Shazam, Stan Lee, and Get Smart all in these three panels. Amazing.

But, showing off his flexibility, Dynamo was a convincing subject for more serious stories, including one from T.H.U.N.D.E.R. Agents in which his constant battling results in PTSD (“combat fatigue,” as it was called then). Fortunately, T.H.U.N.D.E.R. has a cure for that.

NoMan

Run: 2 issues

The hero known as NoMan was originally an elderly scientist, Anthony Dunn, in poor health. He figured out how to transfer his consciousness into a blue-skinned android, transforming him into a hero. He could now move at will between different android bodies, making him basically immortal, and turn invisible thanks to a cloak developed by the late Dr. Jennings.

This origin made for some compelling moments of angst, wherein NoMan regretted his lost humanity and wished to be normal again. In a couple stories, both in T.H.U.N.D.E.R. Agents, this resulted in drastic action, like the time he kidnapped a young woman in the hopes of marrying her and thus feeling more human — this despite the fact that he is really in his 70s. Kidnap someone your own age, you creep.

(I am kidding. Do not kidnap anyone.)

Undersea Agent

Run: 6 issues

This is the weakest link in the T.H.U.N.D.E.R. Agents universe. It had nothing to do with the rest of the books, except a tortured acronym. (U.N.D.E.R.S.E.A. stands for United Nations Department of Experiment and Research Systems Established at Atlantis.) It’s lightly implied that there’s a rivalry between the two organizations: when Undersea Agent 1 gains electromagnetic powers in Issue 2, U.N.D.E.R.S.E.A. is happy about it because it means they finally have a superpowered, T.H.U.N.D.E.R.-style agent of their own.

Undersea Agent 1 (and, for all intents and purposes, the only Undersea Agent) is really Lieutenant Davy Jones, who is stationed at an underwater base (in Atlantis, natch). From there, he and his borderline-useless sidekicks fight aliens, innocent wildlife, and would-be world conquerors with names like Doctor Fang.

What’s his name, again?

I’m not showing you Doctor Fang because he is a bad, bad racist caricature. While the T.H.U.N.D.E.R. Agents franchise isn’t awash in overt bigotry, it is the ’60s, and it does come up now and then. So if you want to experience the franchise without that risk, you might want to stick with the reboot.

Several publishers have tried to revive T.H.U.N.D.E.R. Agents over the years. Perhaps the most high-profile attempt was DC’s, which came out in 2010. Unfortunately, this reboot was written by Nick Spencer, the same genius who would go on to make Steve Rogers a Nazi while mocking trigger warnings and other hallmarks of left-wing activism.

of new characters. I find this approach irritating, which is why I never watched beyond the first Mission: Impossible movie. On top of that, they darkened the premise considerably: every agent’s powers are now slowly killing them instead of just Lightning’s. This isn’t implausible, given Needless to say, Spencer’s involvement dampened my interest in the reboot immediately, and I only read the first three issues to get a feel for what it’s like.

It was fine, I guess?

They went the Mission: Impossible route of setting things in the present day and discarding most of the original cast in favor how little they knew about Dr. Jennings’s inventions going in, but I didn’t care for this dark interpretation of the source material. So even if I didn’t dislike the writer, I would have bailed on the T.H.U.N.D.E.R. Agents reboot pretty fast.

The post Write up on T.H.U.N.D.E.R Agents 1965 appeared first on DayDreamin’ Comics.

]]>
https://ddcomics.org/2026/05/17/write-up-on-t-h-u-n-d-e-r-agents-1965/feed/ 0 6712