Cognitive science is the interdisciplinary study of mind and intelligence. Since its origins in the mid-1950s, computer models have been an indispensable part of theorizing about how the mind works. Cognitive modelling is the process of developing and testing computational models of thinking.
Computer models provide a vocabulary for describing the structures and processes required for human cognition.
Computer models provide a way of seeing whether a cognitive theory's predictions conform to how people think.
Philosophy and cognitive science can be concerned not only with how people do think, but also with how they should think. The former concern is descriptive, the latter is normative (prescriptive). Computer modelling can help to determine what kinds of reasoning are most feasible and effective.
AI aims to make machines intelligent, regardless of whether the processes they use are like those used in human thinking.
In cognitive modeling, the point of computional models is to increase understanding of human thinking.
Historically, however, some of the most important ideas in AI have come about because of cognitive modelling, e.g. rule-based systems and artificial neural networks.
A cognitive theory proposes that human thinking results from the application of a set of computational procedures to a set of mental representations.
A computational model specifies the mental representations as data structures and the computational procedures as algorithms.
A computer program implements the computational model in a particular programming language such as LISP or JAVA.
The theory can be tested by running the program to see whether it behaves like people.
Each student should learn how to develop, use, and evaluate the main kinds of cognitive models that have been important in cognitive science.
Access one of the LISP environments indicated on the main page for this course, find the input window, and type in (+ 2 2).
(equal 2 2) --> T i.e. true
(equal 2 3) --> NIL i.e. false
(equal '(a b) (cons 'a '(b))) --> T
(member 'david students) --> T
(member 'paul students) --> NIL
(and T T) --> T
(or NIL NIL T) --> T
(if (member 'paul professors) 'hello 'goodbye)
I.e. if paul is a member of professors, return hello, otherwise return goodbye.
Find the second element in a list:
(defun second-member (list) (first (rest list)) )
Note: here "list" is a variable
Create a list of the first elements of two lists:
(defun pair-first (list1 list2) (list (first list1) (first list2)) )
DO loops have 3 parts:
E.g. write your own version of the procedure reverse that reverses a list:
(defun reverse* (list) (do ((lst list (rest lst)) ; first parameter (result nil) ; second parameter ) ; exit ((null lst) result) ; iterate (setf result (cons (first lst) result)) ) )
E.g. write your own version of the procedure that calculates the length of the list:
(defun length* (list) (do ((lst list (rest lst)) (result 0) ) ; exit ((null lst) result) ; iterate (setf result (+ result 1)) ) )
E.g. write a procedure that pairs up an atom with each element of a list.
e.g. (pair-up 'paul (students)) --> ((PAUL PASCALE) (PAUL RAY) (PAUL DAVID))
; PAIR-UP pairs up an atom with each element of a list
(defun pair-up (atom list) (do ((result nil) ; first parameter bound initially to nil (lst list (rest lst)) ; second parameter bound initially to list ; at each iteration, it drops the first member ) ; exit condition ((null lst) result) ; when done, return the result ; iterate (setf result (cons (list atom (first lst)) result)) ) )
Computational Epistemology Laboratory.
This page updated Jan. 10, 2005