Associate Professor of Computer Science
His main research interest is in the area of genetic optimization of neural networks for human-like tasks, mainly for cooperative, team-based games. He is currently studying ways in which the coding of evolved parameters affect the performance of artificial multi-agent systems under environments with changing conditions. He is also interested in issues of technology and society, such as access to STEM education for underrepresented students, privacy and data collection on the Internet, and the effect of new media and new technology on the economy.
His papers have been presented at conferences such as the International Joint Conference on Neural Networks, the Congress on Evolutionary Computation, and the International Conference on Neural Information Processing.
This course is designed to give students a strong introduction to computer programming, with an emphasis on their developing their own projects by the end of the semester. As a course that can provide a strong foundation for further computer science courses, this class will expose students to input/output operations, if-else structures, loops, functions, objects, and classes. The course will also introduce students to the use of Python libraries developed by the Open Source community in order to incorporate advanced features into their own programs. Some of these libraries include Pygame, pyEvolve, and Pylab. No prior programming experience is necessary.
Programming tasks can be attacked with a number of different approaches. While real-time systems benefit from event-driven programming, other tasks benefit from object oriented, functional, imperative, logic, or symbolic programming. Students in this course will be exposed to the most commonly used programming paradigms, as well as what distinguishes them from each other and when using any one of them might be advantageous. Prerequisite detail: At least one semester long college course in computer programming in a language such as python, C, C++, perl, Java, Lisp, or Clojush
This course is designed to give students a strong introduction to computer programming, with an emphasis on their developing their own projects by the end of the semester. By the end of the course successful students will be able to write programs of moderate difficulty. While Unity is a platform commonly used to develop computer games, students will be able to develop any type of program. As a course that can provide a strong foundation for further computer science courses, this class will expose students to input/output operations, if-else structures, loops, functions, objects, and classes. No prior programming experience is necessary.
Evolutionary computation is an artificial intelligence strategy based on natural evolution, in which candidate solutions are evaluated and recombined based on their performance. Agent-based systems use a collection of information to solve a complex task, while possibly providing for planning, communication, error recovery, and learning. In this course we will study and combine these two techniques and apply them to virtual simulations of games such as Capture the Flag, Robocup, RoboRescue, Quidditch, and others. Emphasis is placed on the design and implementation of course projects. Students will be able to work with a variety of software packages, such as neural network simulators, evolutionary packages, virtual world simulators, computer game platforms such as pygames and Unity. Students should be comfortable programming in at least one high level programming language such as python, C, C++, C#, Java, Lisp, etc. Prerequisite detail: At least one college-level course in computer programming.
Artificial Neural Networks (ANN) are computational devices loosely based on the brain. Basic nodes perform a very simple computation, and complex behavior emerges only after connecting a high number of these neurons to each other. Recent results in using massive amounts of data and CPU power have shown promising results in complicated human-like tasks, such as automatically describing scenes depicted in computer images, or extracting information from online text documents. This course will provide students with background information on these recent developments, and allow them to design their own data processing experiments with state-of-the-art artificial neural network simulation software. Prerequisite: at least a year worth of college level courses in one or more of the following cognitive science disciplines: computer programming, linguistics, statistics, neurosciences.
Bigger-sized software programs, which are developed through a longer span of time, require looking into aspects of the software development cycle that are not necessary for smaller projects. This course will expose students to the design, implementation, testing, and maintenance of this type of projects, putting particular but not exclusive emphasis on agile development methods. Students will be involved in the actual GROUP implementation of a major piece of software, in conditions similar to those found in industry. Prerequisite: Students must have ample experience before the beginning of the course with the C, C++, or Java, or some other high level languages, in at least a semester of computer programming experience.
This tutorial will introduce students to the main topics in cognitive science through reading and viewing a selection of science fiction literature, TV shows, and films. Some of the topics that will be explored are: What does it mean to be alive? How do we know that something is real? What is consciousness? Can machines be intelligent? What is the relationship between language and mind? How do we learn to do the things we do? Students will be evaluated based on class attendance and participation, short response papers to each of the course topics, and a longer final paper on one or more of the course topics.