The field of artificial intelligence (AI) is concerned with reproducing the abilities of human intelligence in computers. In recent years, exciting new approaches to AI have been developed, inspired by a wide variety of biological processes and structures that are capable of self-organization, adaptation, and learning. This course is a hands-on introduction to the algorithms and techniques of biologically-inspired AI, and is intended for students with prior programming experience. Examples of these new approaches include evolutionary computation, artificial neural networks, autonomous robots, and swarm intelligence. We will focus primarily on genetic algorithms, neural networks, deep learning, and reinforcement learning, from both a theoretical and practical perspective. We will use the Python programming language to implement and experiment with these techniques in detail, and to test them out on both simulated and real robots. Students will have many opportunities for extended exploration through open-ended, hands-on lab exercises and conference work. Students should have at least one semester of experience programming in a high-level object-oriented language such as Python, Java, or C++.
Open to any interested student.
Prof. Jim Marshall
Office: Ilchman Science Center 100
Phone: 2673 (from off campus: 914-395-2673)
Email: j + my last name + @sarahlawrence.edu
Our course this semester will be conducted synchronously online via Zoom, so you should read through the Zoom information for students provided by the SLC Help Desk. Most of the time, I will encourage everyone to keep their web camera turned on during class. This will help me to get to know everyone more quickly. If you would prefer that others not see your local surroundings, you might consider using a Zoom virtual background or customizing your Zoom profile to show a picture of yourself. Other things to keep in mind:
Please keep your microphone muted until you want to speak. This will help cut down on distracting background noise and make it easier for everyone to focus. An easy way to temporarily un-mute yourself is to just hold down the space bar while you speak.
Test out your microphone and audio before class starts.
When your web camera is on, please avoid having a distracting background or wearing clothes you wouldn't typically want the general public to see.
Since I've been known to forget to un-mute myself or turn on screen-sharing when attempting to present something, please don't be shy about letting me know when you can't see or hear what I'm trying to show you!
To ask me a question, either type it into the public chat or, better yet, just speak up and say "question" to get my attention. Although I try to monitor the chat, it can sometimes take me a while to notice, especially when I'm sharing my screen (which I will be doing often), so the quickest way to get my attention is usually to just speak up.
You should familiarize yourself with how to use various Zoom features like screen-sharing, annotations, and the whiteboard.
Work in surroundings that are as quiet and undisturbed as possible to minimize distractions around you, stay off your mobile phone or other devices, and avoid having extraneous side conversations with others while you are in class.
Together we will strive to make the classroom an open and welcoming environment where everyone is mutually respected no matter their race, gender, age, disability, religion, sexual orientation, or national origin. If you feel this goal is not being met or you have any suggestions as to how to create a more positive and open classroom environment, please do not hesitate to contact me.
We will be using the following two books this semester. Artificial Intelligence: A Guide for Thinking Humans, by Melanie Mitchell, gives an excellent, up-to-date, and largely non-technical overview of the current state of AI. In particular, it provides a wealth of background information on the historical and ethical dimensions of AI, as well as clear explanations of the key ideas behind several AI algorithms that we will be studying in detail this semester. You should have a copy of the Mitchell book by the first week of class (or at least have ordered one). Either a print or electronic version is fine. You can click on the book image below for links to various online vendors. Deep Learning with Python, by François Chollet, is a technical deep-dive into modern neural networks using Python and the Keras deep-learning library. This book will be available electronically through MySLC, so you don't need to purchase it yourself. In addition, I will likely assign several other supplementary readings as we go, which will be provided in class.
Homework will be assigned regularly. The homework assignments will introduce you to a variety of biologically-inspired AI algorithms and concepts, and will require a substantial amount of coding in Python. For each assignment, you will write programs to implement algorithms and run various types of experiments. You will also be required to write a short report (a few pages in length) explaining in detail the experiments you performed and the results you obtained. Your assignment will be evaluated based on the quality of your code and experimental results, and the clarity and thoroughness of your written report. There will be no exams. If you don't know Python or need a refresher, a good place to start is Think Python, by Allen Downey.
Your conference project may focus on evolutionary computation, neural networks, reinforcement learning, other types of machine learning algorithms, or some combination thereof. Because much work in AI tends to be collaborative in nature, you are permitted — and even encouraged — to work with a partner on your project if you wish (but talk to me about this first). If you work together, you and your partner will be expected to contribute equally to the design and implementation of your project. During the last two weeks of the semester, all students will be required to give a formal project presentation to the class, and to write a short paper describing their project. The paper and all project code will be due by 6:00pm Friday, May 7 for seniors, or by 6:00pm Wednesday, May 12 for non-seniors.
I will often send out announcements to the class through email, so you are required to check your Sarah Lawrence email account at least once per day. I will use your @gm.slc.edu address because it is reliable and easy to remember. You should also check the course web page frequently for code examples discussed in class, and for the homework assignments. I will be happy to answer your questions by email or Zoom and will try to respond as quickly as possible to messages that pertain to the course.
You are strongly encouraged to see me whenever you are having difficulty with the material. If you are confused about something, don't stay that way! Staying confused will only make things worse later. Talk to me as soon as possible so that we can clear up the problem. I'll be happy to answer your questions by email or to schedule a separate appointment with you on Zoom.
If you have a disability that may interfere with your ability to participate in the activities, coursework, or assessment of the objectives of this course, or any of your other courses, you may be entitled to reasonable accommodations. Please contact Polly Waldman, Associate Dean of Studies and Disabilities Services located in Westlands 116. You may also call Disability Services at 914-395-2235 or email pwaldman at sarahlawrence.edu. Under the Americans with Disabilities Act and Section 504 of the Vocational Rehabilitation Act of 1973, all students, with or without disabilities, are entitled to equal access to the programs and activities of Sarah Lawrence College and the College will make reasonable accommodations when appropriate and necessary.
The highest level of academic integrity is expected of every student. You are strongly encouraged to discuss ideas and approaches to solving problems on a general level with your fellow classmates, but you are not allowed to share your program files, code, or solutions with others. I can almost always tell when two different programs derive from the same original source code, even if cosmetic changes have been made to it. The code you hand in must have been written by you from scratch, with the following permitted exceptions: code provided in class by me, code from the textbook, or code developed together with a partner if you are collaborating on a lab or project. In this case, you and your partner may freely exchange code developed as a team, and are jointly responsible for the work submitted. Under no circumstances may you hand in work done by someone other than yourself or your partner under your own name. Effective learning is compromised when this is not the case.
In all cases, if you make use of any code that was written by someone else in your assignment, including your partner, you must clearly acknowledge this in your code. This also goes for any help obtained via the Internet. When in doubt, credit the people or sources from whom you got help. If you are ever unsure about what constitutes acceptable collaboration, just ask. You are also responsible for carefully reading the College's official Policy on Academic Integrity in your SLC Student Handbook. Failure to abide by these rules is considered plagiarism, and will result in severe penalties, including possible failure in the course. Please do not put me, yourself, or anyone else in this unpleasant situation!