Dan S. Myers (Dr. Myers)
Bush 263
[email protected]
407-646-2151
- Tuesday and Thursday from 10:00 to 11:00 AM
- Friday from 1:30 to 2:30
CMS 195 Programming with AI: Special topics course investigating new methods of software development using artificial intelligence systems. Topics include AI copilots, prompting techniques, software design for AI implementation, testing and validation, retrieval augmented generation, and agents.
There is no required textbook. Our material will come from several online resources, plus my own notes.
We'll use GitHub Codespaces for programming.
At the end of this course, you will be able to:
-
Work with an AI copilot to support software development.
-
Use principles of sound software engineering that are beneficial when working with AI, including testing and interface design.
-
Implement an AI-based application using retrieval augmented generation (RAG).
-
Discuss other applications of AI to software, including agents.
This is tentative and will probably change a bit as we move through the semester.
This course is 2 credits and ends at Spring Break.
Week of | Topic |
---|---|
1/13 | Intro to Cursor and copilots |
1/20 | Software organization, interface design |
1/27 | Testing |
2/3 | State-based chat models |
2/10 | Retrieval augmented generation I |
2/17 | RAG II |
2/24 | Agents I |
2/17 | Agents II |
3/3 | Projects |
- First day of class: January 15
- Last day of class: April 28
- Spring break: March 10 to March 14
- Last day to drop the class: January 28
- Last day to withdraw without penalty: March 28
Grading for this course will be different from your previous classes.
Rather than calculating your score as number of points on a 0-100 scale, your grade will be based on attaining satisfactory performance on a bundle of assignments. This approach is called Specifications Grading or Contract Grading and it has several advantages over the traditional 0-100 based points system.
You must be registered for a section of CMS 120L. You'll receive the same grade for both CMS 120 and CMS 120L.
We'll have one kind of assignment in this class:
- Approximately four out-of-class assignments. These will require implementing simulation models and solving analytical questions. You should be prepared to devote substantial effort to completing these projects.
That's it. For this course, I only care about projects.
I will grade most of the items you turn in on a two-level scale: your work will be either satisfactory or receive no credit. "Satisfactory" means that the work is:
- Substantially complete and correct (there may be a few issues, but only minor ones).
- Shows real understanding and application of the course material.
- Completed on time in the required format.
For programming assignments, you must make a fair attempt on every problem.
To earn an A, you must meet the following criteria:
- Satisfactory completion of the major assignments.
If you fail to complete the requirements for an A, your grade will be adjusted downwards according to the following table:
Performance | Your grade will be adjusted downwards by |
---|---|
Partially complete major assignment | Fraction of a letter grade (e.g., A to A-) |
Unsatisfactory or missed major assignemnt | One full letter grade (e.g., A to B) |
These penalties are cumulative. For example, if you failed to satisfactorily complete two major projects, your base grade would be lowered by 2 letters, from A to C.
-
In a traditional system, your grade is ultimately determined by my judgment of your work. My judgment is pretty good, but specs grading gives you more clarity about where you stand and guidance for how to achieve the grade you want
-
Your grade is directly tied to the learning that you demonstrate. The satisfactory work sets a baseline, but to earn a higher grade, you must demonstrate a higher level of engagement with the course material.
-
It's relatively easy to get a B if you do the required work, but hard to get an A. This preserves the integrity of the course, while still making it possible for everyone to succeed.
-
If you only need a B or a C, you can adjust your effort accordingly: the standards are transparent. You don't have to spend time on the most difficult assignments if you don't need them to get the result you want.
-
It reflects how you'll be evaluated in your career. Work assignments aren't graded out of 100% and your boss won't give partial credit for incomplete work. So, basically, I'm setting you up for massive career success.
This is probably a new approach to grading for you. In particular, students new to specs grading often have anxiety about the lack of partial credit in the system.
Here are a few things to keep in mind:
-
You don't have to be perfect. The "substantially complete and correct" standard allows for imperfections in your answers and you only need 90% for the reading and most assignments, so you don't have to correctly answer, or even attempt, every problem, so long as your cumulative work meets the required standard.
-
You do need to be consistent. The system rewards you for putting forward good, consistent effort.
-
Attend the labs. The lab sessions are your main place to practice programming skills. Make sure you attend every lab session.
-
You will get lots of feedback. I will be there with you in lab to check on your work. The major projects will have clear standards describing what's required to receive full credit.
Attendance The only way to be consistently successful in your academic career is to regularly attend class meetings and participate in in-class activities. Therefore, while I do not mandate attendance at every single class, I expect full attendance every time we meet.
Laptops If you have a laptop, please bring it to class.
Phones Unlike laptops, I see few advantages to using phones during class. Please silence your phones at the beginning of class. Holding text conversations during class is both distracting and disrespectful and will not be tolerated.
Late Submissions Assignments are due on the stated day at the stated time. Speak to me in well in advance of the due date if you need an extension.
Please speak to me if there are any issues making it difficult for you to succeed in class. We can always work out a plan to deal with illness, work, or family responsibilities.
Recording No audio or video recording is permitted without prior permission.
Canvas and GitHub Most of the course material will be distributed through GitHub. We'll use Canvas to keep track of grades, announcements, and a few other things.
Late work is only accepted in the case of unusual extenuating circumstances, such as a sudden illness. Work for other classes or part-time jobs does not count as extenuating. You are responsible for submitting work on time, in the required format, and using the correct submission procedure.
Please speak with me as soon as possible if you have concerns about your ability to meet a deadline so we can discuss options.
I will make every effort to adhere to the topics and schedule described in this syllabus. However, I reserve the right to make changes for the good of the course.
This course is a four-credit-hour course that meets three hours per week. The value of four credit hours results, in part, from work expected of enrolled students both inside and outside the classroom. Rollins faculty require that students average at least 2 ½ hours of outside work for every hour of scheduled class time. In this course, the additional outside-of-class expectations are substantial time spent on self-directed learning, team colalboration, and completion of programming assignemnts.
Links to the full list of syllabus policy statements are available here.