Dan S. Myers (Dr. Myers)
Bush 263
dmyers@rollins.edu
407-646-2151
- Fridays from 1:00 to 2:00
- Tuesdays and Thursdays from 10:00-11:00
CMS 120 Introduction to Computer Science. Introduction to fundamental aspects of programming using a high-level language, focusing on problem solving, software design concepts, and their realization as computer programs. Topics include: variables, using existing classes, selection and iteration, and arrays. Classroom activities are used to gain mastery of these principles. Co-requisite: CMS 120L
At the end of this course, you will
-
Be able to write programs using core features of the Python language, including variables, conditionals, functions, and loops.
-
Write programs using Python's built-in list and dictionary data structures.
-
Be able to write programs that conform to a written specification and are evaluated using automated testing.
-
Understand and use methods of sound program design, such as abstraction and stepwise refinement, to design solutions to open-ended programming problems.
-
Read and comprehend program source code.
-
Be familiar with common terminology from computer science and programming and the fundamentals of computer organization, systems, and data representation.
-
Use artificial intelligence tools in a collaborative way to support programming
This class has a co-requisite of CMS 120L Introduction to Computer Science Lab. We'll complete a total of six hypothesis-based lab activities during the semester. Other lab sessions will focus on building your core programming skills by completing practice problems and activities.
CMS 120 and the lab are listed as separate sections but you'll receive the same grade for both. Completing the labs is one component of your final grade, discussed below.
We'll be using the free interactive online text called Python for Everybody published by Runestone. The book has chapters with interactive questions that you'll complete as part of each reading assignment.
Go to runestone.academy, choose "Log In", then click the "Sign Up" button at the top of the page to create an account. During the account creation process, one of the fields will ask for the class you want to join. Enter rollins_cms120_sp26, which is the code for our class, then finish creating your account.
| Day | Topic | Assignments |
|---|---|---|
| 1/14 | Hello, World! | |
| 1/16 | Printing and arithmetic | Chapter 1 reading |
| 1/19 | MLK Day (no class) | |
| 1/21 | Dr. Myers out of town | Lab 1 meets in the afternoon |
| 1/23 | Dr. Myers out of town | Chapter 1 reading due |
| 1/26 | Intro to variables | |
| 1/28 | Variables, formatted printing, and input | Lab 2: Conversions |
| 1/30 | Relational operators, the if statement |
Project 1 out, Chapter 2 reading |
| 2/2 | if-elif-else |
|
| 2/4 | Logical operators | Lab 3: Making choices |
| 2/6 | Making randomized choices | Project 1 due |
| 2/9 | RPS | Chapter 2 reading due |
| 2/11 | AI and LLMs | Lab 4: Fitts' Law |
| 2/13 | Intro to functions | Project 2 out |
| 2/16 | Functions II: Functions that take parameters | Chapter 3 and 4 reading |
| 2/18 | Functions III: Functions that return values | Lab 5: Fun |
| 2/20 | Functions IV: Functions + conditionals | Project 2 due |
| 2/23 | Local variables and scope | |
| 2/25 | The for loop |
Lab 6: The Compleat Gamester |
| 2/27 | for loops with range |
Chapter 3 and 4 reading due |
| 3/2 | Intro to lists | Chapter 5 reading |
| 3/4 | Practice with loops and lists | Lab 7: Euouae |
| 3/6 | More practice | Midterm study guide out |
| 3/9 | Looping over strings | |
| 3/11 | Review for midterm | Chapter 5 reading due |
| 3/13 | MIDTERM EXAM (IN CLASS) | |
| 3/16 | SPRING BREAK | |
| 3/18 | SPRING BREAK | |
| 3/20 | SPRING BREAK | |
| 3/23 | Re-intro to lists, looping over lists | |
| 3/25 | Looping by index position | Lab 9: Wordplay, Project 3 out |
| 3/27 | Choosing random items from a list | |
| 3/30 | Working with files, the while loop |
|
| 4/1 | Games with the while loop, valid input |
Lab 10: Jeu Monégasque, Project 3 due |
| 4/3 | Review try-except, selection sort |
Chapter 6 and 9 reading |
| 4/6 | Dictionaries | Project 4 out |
| 4/8 | Code cracking | Lab 11: Victorian Gothic Guide to Data Analytics |
| 4/10 | Hashing and passwords | Chapter 6 and 9 reading due |
| 4/13 | Binary numbers | Project 4 due |
| 4/15 | Character encodings | Lab 12: Precision, Project 5 out |
| 4/17 | Stepwise refinement (feat. Tic-Tac-Toe) | |
| 4/20 | More refinement (feat. Nim), Tuples and anagrams | |
| 4/22 | Machine learning and classification | Lab 13: My Heart Will Go On |
| 4/24 | Decision trees, Neural networks | Project 5 due |
| 4/27 | Objects and classes, __init__ and __str__, wrap-up |
Project 6 out |
- First day of class: January 14
- MLK day (no class): January 19
- Last day of class: April 28
- Spring break: March 16 to March 22
- Last day to drop the class: January 27
- Last day to withdraw without penalty: March 27
- Dr. Myers out of town (no class meeting): January 21 and 23
- Midterm exam: March 13 in class
- Final exam: April 30, 2-4 PM (time from the official final exam schedule)
I'm not able to accommodate alternate times for the exams outside of the official testing center. Please plan your travel for spring break and the end of the semester with the expectation that you'll be present at the scheduled exam times.
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 five kinds of assignments in this class:
-
Autograded reading questions from the Runestone text. These are easy to answer if you complete the required reading.
-
A set of six out-of-class programming assignments. These involve writing larger, more substantial programs that combine multiple techniques. They also require you to practice program development skills.
-
The CMS120L lab meetings. Each lab consists of practice programs or activities to reinforce the topics we're covering that week. Six of the labs also incorporate hypothesis-based data collection that allows this course to account for the RFLA Science requirement. The labs will be graded on completion and I'll be there with you during each session to help you and check your work-in-progress.
-
Written midterm and final exams. The midterm will be given in-class on the day specified on the calendar and the final will be given at the time scheduled by the college. The final is not cumulative, but unavoidably builds upon the techniques that we cover in the first part of the class. The focus of both exams will be reading and understanding program code.
-
Challenge projects. These are more expansive projects that will allow you to stretch a little bit beyond the regular assignments.
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. For reading, you must complete 90% of the assigned problems in order to receive credit.
To earn an B, you must meet the following criteria:
- Satisfactory completion of the six major programming assignments.
- Satisfactory completion of 11 of the 12 labs. You can miss one lab without it affecting your grade.
- Earn a score of at least 80% on both the midterm and final exams.
- Complete the autograded questions in the assigned reading. To allow some flexibility, the threshold for receiving credit is 90% of the assigned questions.
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 |
|---|---|
| Unsatisfactory major programming assignemnt | One full letter grade (e.g., A to B) |
| Missing more than the one allowed lab | Fraction of a letter grade for the first missed lab (e.g., A to A-) |
| Additional missed labs | One full letter grade for each |
| Incomplete reading assignment | Fraction of a letter grade for each |
| Score between 60% and 80% on an exam | Fraction of a letter grade |
| Score of less than 60% on an exam | One full letter grade |
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.
To earn a higher grade, complete the Challenge Projects. There will at least 3 and each one will raise your grade by a fraction of a letter, e.g. B to B+. Completing the basic course work and three challenge projects will earn an A.
-
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. Don't attend class if you're sick.
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.
As your course facilitator, 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.
Large-language artificial intelligence models are changing how professional software developers design and write code. Therefore, it's appropriate for us to practice programming with AI.
However, simply typing prompts into an AI tool and copying its output is not a good use of your time:
- You still need to understand the fundamentals of programming to use AI code generators effectively.
- Anyone can copy and paste; if that's your only skill, then you're adding no value and you are easily replaceable.
In this course, I will teach you how to use AI collaboratively. I'll show you techniques for working with AI as a "co-intelligence" that can help you write better code and learn faster.
To achieve this goal, we're going to abide by the following policies:
- Labs are for practicing fundamental skills in-person, so you can't use AI for them unless it's specifically part of the lab activity.
- The out-of-class assignments are designed to be done with AI. Each assignment will give you specific suggestions on how to use AI as part of your development process.
- You should complete the reading questions without using AI.
- The in-class midterm uses no written or electronic resources.
Membership in the student body of Rollins College carries with it an obligation, and requires a commitment, to act with honor in all things. The student commitment to uphold the values of honor--honesty, trust, respect, fairness, and responsibility--particularly manifests itself in two public aspects of student life. First, as part of the admission process to the College, students agree to commit themselves to the Honor Code. Then, as part of the matriculation process during Orientation, students sign a more detailed pledge to uphold the Honor Code and to conduct themselves honorably in all their activities, both academic and social, as a Rollins student. A student signature on the following pledge is a binding commitment by the student that lasts for his or her entire tenure at Rollins College:
The development of the virtues of Honor and Integrity are integral to a Rollins College education and to membership in the Rollins College community. Therefore, I, a student of Rollins College, pledge to show my commitment to these virtues by abstaining from any lying, cheating, or plagiarism in my academic endeavors and by behaving responsibly, respectfully and honorably in my social life and in my relationships with others. This pledge is reinforced every time a student submits work for academic credit as his/her own. Students shall add to the paper, quiz, test, lab report, etc., the handwritten signed statement:
“On my honor, I have not given, nor received, nor witnessed any unauthorized assistance on this work.”
Material submitted electronically should contain the pledge; submission implies signing the pledge.
In the context of this class, my interpretation of the Honor Code pledge is that the work you submit for every assignment shall be your own original creation. This means that any item you submit must be written by you and you alone, or in an assigned group project by your group alone. Copying a complete solution from fellow class members, previous class members, books, or the Internet is a violation of this policy and will constitute academic misconduct.
It is acceptable to discuss questions and solutions in general terms with other class members, but your discussions should not be at a level of detail that would lead to you submitting the same work as a another student.
Rollins College is committed to equal access and inclusion for all students, faculty and staff. The Rehabilitation Act of 1973 and the Americans with Disabilities Act of 1990 create a foundation of legal obligations to provide an accessible educational environment that does not discriminate against persons with disabilities. It is the spirit of these laws that guides the college toward expanding access in all courses and programs, utilizing innovative instructional design, and identifying and removing barriers whenever possible.
If you are a person with a disability and anticipate needing any type of academic accommodations in order to fully participate in your classes, please contact the Office of Accessibility Services, located on the first floor of the Olin Library, as soon as possible. You are encouraged to schedule a Welcome Meeting by filling out the “First Time Users” form on the website: https://www.rollins.edu/accessibilityservices and/or reach out by phone or email: 407-975-6463 or Access@Rollins.edu.
All test-taking accommodations requested for this course must first be approved through the Office of Accessibility Services (OAS) and scheduled online through Accommodate at least 72 hours before the exam. Official accommodation letters must be received by and discussed with the faculty in advance. There will be no exceptions given unless previously approved by the OAS with documentation of the emergency situation. We highly recommend making all testing accommodations at the beginning of the semester. OAS staff are available to assist with this process.
As per the Academic Honor Code, plagiarism is defined as “Offering the words, facts, or ideas of another person as your own in any academic exercise.” In order to avoid plagiarism, all students are expected to use proper citation norms. For our course, all assignments will use [faculty choice - MLA, Chicago, APA, etc] citation style.
The professor will accommodate a reasonable number of excused absences for religious holidays and official off-campus college business such as academic conference presentations and athletic competitions. However, per the College’s policy on excused absences (http://www.rollins.edu/catalogue/academic_regulations.html#class-attendance), students must discuss with the professor the dates of the anticipated absences no later than the last day of the drop period. Students must present to their professor written evidence of the anticipated absences and discuss with him/her how and when make-up work should be completed prior to missing the class. Students should not expect to receive allowance for excused absences if they do not meet with the professor beforehand and clarify the dates as necessary. Absences will be addressed by the faculty member in accordance with his/her attendance policy. The professor retains the right to determine what would be considered to be a reasonable number of absences (excused or otherwise) for the course. A student will not fail a course because the number of religious observances and/or college business absences exceed the number of absences allowed, except if excessive absences make it impossible to fulfill the expectations of the course. The student’s class participation grade in the course, though, may still be affected.
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 reading and substantial programming projects in our online programming environment.
In order to protect the integrity of the classroom experience, the use of recording devices is limited to either the expressed permission of the faculty member or with proper documentation from the Office of Accessibility Services. Information about accommodations through Accessibility Services can be found at http://www.rollins.edu/accessibility-services/. Recording without the proper authorization is considered a violation of the Rollins Code of Community Standards.
Rollins College is committed to making its campus a safe place for students. If you tell any of your faculty about sexual misconduct involving members of the campus community, your professors are required to report this information to the Title IX Coordinator. Your faculty member can help connect you with the Title IX Coordinator, (TitleIX@rollins.edu or 407.691.1773). You will be provided with information, resources and support. If you would prefer to speak to someone on campus confidentially, please call the Wellness Center at 407.628.6340. They are not required to report any information you share with the Title IX Coordinator. Misconduct under Title IX includes gender-based discrimination and harassment, sexual harassment, sexual violence including fondling and assault, sexual coercion/force, sexual-based communication, sexual exploitation, interpersonal violence including dating and domestic violence, stalking, complicity and retaliation. Everyone is protected under the following protected statuses: sex (including pregnancy), gender, gender identity (including transgender status), gender expression, and sexual orientation. For information, visit https://www.rollins.edu/sexual-misconduct/