AAM Wellesley College CS317 Mobile App Development, Spring 2024 | Syllabus

Table of Contents

Basic Information

Instructor:
Franklyn Turbak (call me "Lyn")
Pronouns: he/him
Office: SCI W120 (x3049)
Email: fturbak asperand wellesley dot edu
Web: http://cs.wellesley.edu/~fturbak

Class Meetings: Tue/Fri, 11:20--12:35pm in SCI Hub 103

Tutor: Rachelle Hu

Graders: Emma Lim, Rachelle Hu, and Lyn

Announcements, Q&A: https://groups.google.com/a/wellesley.edu/g/cs-317-01-sp24
(A Google Group, email cs-317-01-sp24@wellesley.edu)

Prereqs: CS230 and a willingness to learn new languages and tools, with guidance from the CS317 staff and your classmates, but sometimes on your own.

Course Description

Catalog Description

Mobile devices have become more popular than desktops or laptops for communicating with others, accessing information, and performing computation. This course covers the principles and practice of developing applications for mobile devices, with an emphasis on features that distinguish them from desktop/laptop applications and web applications. Topics include: the functionality of modern smartphones and tablets, including device sensors, actuators, and communication; an iterative design process for apps that people find both useful and usable; designing and implementing mobile app interfaces and behaviors; and tools for developing software in teams.

In this hands-on and programming-intensive course, groups will build web apps and mobile apps using a process that combines aspects of Human Computer Interaction and software engineering. This course begins by using the React JS framework to build interactive web apps out of modular components. It then transitions to React Native, a cross-platform component-based mobile app development environment for creating mobile apps that run on both iOS and Android devices. The course also explores how apps can leverage cloud databases to store and share information.

Distributions: MM - Mathematical Modeling and Problem Solving

Prerequisites(s): CS230

Learning Goals

The aim of this course is to enable students to analyze, design, implement, test, and debug web apps and mobile apps using full-stack development techniques.

Students who complete this course should:

Readings & Videos

There is no textbook for this course. Many lectures will have readings in the form of tutorials, code examples, and technical documentation. Sometimes there will be videos to watch.

Course Work

Preparing for Lectures

Preparation for each lecture will typically involve reading some online resources linked from the Before Next Class section of the calender entry for the previous lecture. Many of these resource will be tutorials, documentation, and code examples you will often want to revisit throughout the course.

In cases where lecture materials are completed before the day of class, I will post them ahead of time and you are welcome to review them before class. But unless I indicate otherwise (e.g., a the Before Next Class section of the previous lecture), it is not expected that you will view the lecture materials before class. Also, in many cases I will post the lecture materials only shortly before class.

Lectures

In lecture, I will present an overview of material via a combination of slides, web pages, examples, and hands-on exercises. There will often be interactive group activities involving understanding, modifying, or creating apps on your laptop. Please bring your laptops to class. If you do not have a laptop, please sit next so someone who does.

Slides presented during lecture will be published in the calendar entry for that lecture.

App Projects

All of your work in this class will be in the context of projects that involve designing, implementing, testing, debugging, presenting, and evaluating web apps and mobile apps. See the course schedule for (tentative) details on the number and timing of the projects.

There are three different modes for projects:

  1. In team projects, you are required to work in a team of 2 to 3 members. In some cases, project partners may be chosen randomly. In other cases, you will be able to submit preferences involving the project topic, partners, and/or your available work times, and I will try to satisfy as many of your preferences as I can when assigning you to a team.

    The final project is a team project that will span more than half the semster in terms of brainstorming, designing, implemenation. and testing. You will work on other projects as you complete milestones for the final project (see the course schedule for details).

  2. In solo projects, you are required to work on the project alone.
  3. In team-optional projects, you have the choice to either work solo or with a partner.

No Exams, Quizzes, or Final Exam

In this class, all of your graded work will involve app projects. There will be no other graded assessments: no quizzes, no in-class or take-home exams, and no final exam.

Expectations

Expected Weekly Time on Course

Between preparing for class, attending class,working on projects, and attending help hours, you are expected to spend about 12 to 15 hours per week on this course.

This number is ballpark average. The actual numbers will depend on the particular student and the particular week. Designing, implementing, debugging, testing, presenting, and evaluating apps can take an amount of time that is difficult to predict. Because of this, many students can expect that during some weeks they might spend more than (in some cases much more than) 15 hours on this course, especially when working on large projects like Project 6 Path Recorder or the final project

One way to reduce the amount of time you spend on this course is to be proactive about seeking help. If you get stuck on a something and cannot get unstuck within about 30 minutes (including talking to your project partners and looking up potential solutions on the web), stop working on the problem and seek help from Lyn or Rachelle in help hours.

Other Expectations

Course Policies

COVID Policy

Everyone wants COVID to be over, but it's not. There are new strains circulating, and because Wellesley brings together people from all over the world, many of whom travel to MIT and Olin an a weekly basis, it is a fertile environment for COVID (and also flus, colds, and other ailments) to spread.

Indeed, a relatively large percentage of CS317 students contracted COVID in the Fall 2023 semester, which in some cases significantly impacted their work in the course.

Masking Policy

For the Spring 2024 semester, I have the following COVID masking policy, which is adapted from a COVID policy due to CS Prof. Peter Mawhorter:

Statistically, it’s fairly likely that at least one member of our class will have an asymptomatic case of COVID-19 this semester (so that nobody, including them, will know they have it). So it is is prudent for us to wear masks at all times in the classroom, including during student hours. See this calculator page for a model of the probabilities involved. Feel free to adjust the numbers there and see how they play out. Even at just 1 case per week across the whole campus, the probability across the entire semester that a member of the class will have an asymptomatic cases of COVID is about 10%. If the campus cases/week goes up to 5, the whole-semester probability is ~40%. I recommend you experiment with the numbers in this model.

Given vaccinations, many people are now treating COVID-19 like just another flu: something to be avoided, but not necessarily to take stringent precautions against. This attitude is sadly not supported by the data. COVID-19, unlike the flu, has a significant (likely greater than 1/1000, possibly as high as 1/10 or greater) risk of long-term, potentially-permanent complications. (This meta-analysis from January this year has an overview, although some of its percentages may be somewhat pessimistic.) In contrast, the risks of such complications from the flu are more like 1/100,000 or lower. Also, for immunocompromised people who cannot effectively be vaccinated (e.g., cancer patients undergoing chemotherapy), the risk of death from COVID-19 is still significant and is much greater than that from the flu.

There may be immunocompromised students in our class, and in principle, I’d like to create a classroom where such students could be included (despite the risks inherent in an in-person setting, which we have already decided to move to given the significant drawbacks of remote learning). Because of this, as a basic gesture of inclusivity, and as something that will help limit the number of sick days we collectively have due to other airborne illnesses, I recommend that we should all wear masks in the classroom & during student hours.

Because the campus policy does not require wearing masks in the classroom, I will not require wearing a mask in class and in-person help hours, although I strongly recommend doing so. Other professors may have different policies.

If You Test Positive for COVID

If you test positive for COVID, you must follow the campus policy for students who testing positive:

Also, students who test positive for COVID should email me ASAP so that we can make a plan for your work that makes sense for your individual situation. In particular, since many CS317 projects involve partners, the plan must take into account your partner(s) as well as you.

Consulting Resources

In this course, we will not be able to cover in class all the details of all the concepts, skills, techniques, libraries, etc. that you will need to build apps that you find personally satisfying. So it is expected that you will be proactive about learning about many of these details on your own or together with your classmates.

However, there are some important ground rules that are explained in this section. There are two overarching rules to follow:

  1. Never pretend that code, images, or ideas due to others are your own. Doing so is considered an Honor Code violation.
  2. In most (but not all) cases, you can use code, images, or ideas created by others as long as you give them proper attribution. Using them without proper attribution is considered an Honor Code violation.

Proper Attribution

In general, if from a resource outside of the course materials you learn a concept, technique, coding pattern, or design style that was not covered in in class or if you copy or adapt a chunk of code or an image/drawing created by someone else that you would not have been otherwise able to create on your own you must give credit to that resource in your work.

  1. In code, you give attribution in a comment of your code by giving a URL of the resource or other identifying information (e.g., the name of a person, the title and author of a published book/article, etc.) and explaining what aspect of that resource you learned, copied, or adapted in your code.
    • General influences can be included in comments at the top of a code file.
    • Atribution for smaller chunks of code (e.g. specific objects, functions, statement sequences) should be included in comments on those smaller chunks of code.

    For example, the todo app in CS317 lectures 2 and 3 was adapted from Homework Project 0 in the EdX Harvard University course CS50's Mobile App Development with React Native, ' so the .html, .css, and .js files all include a comment that explicitly mentions this project and the course (with a URL).

  2. In slides or documents, include a note, citation, or footnote for resources (including images, drawings, visual styles, etc.) that you quoted, copied, or adapted.
  3. Although the use of generative AI tools like ChatGPT, CoPilot, DALL-E, etc. is strongly discourageed in this course, if you do use these tools, you must follow the Proper Attribution Policy for Generative AI Tools presented later.

Failing to give proper attribution is considered a violation of the Honor Code policy.

If you are unsure how to give proper attribution to a resource, please consult Lyn.

Class Materials

You are expected to frequently consult materials posted on the CS317 course web pages, including slides, web pages, documents, and sample programs written (or adapted by) Lyn, as well as links to documentation, tutorials, and code written by others. You can use all of these materials without explicit attribution; they are part of the "assumed knowledge" of the course.

Documentation and Tutorials

You are encouraged to visit websites with documentation and tutorials related to CS317, even if they are not explicitly mentioned in the CS317 course materials. In general, you are allowed to use these materials without explicit attribution.

However, There are a few exceptions:

  1. If you learn a concept, technique, or coding pattern that was never mentioned in class from a resource, you should give that resource proper attribution.
  2. If you copy or adapt a nontrivial chunk of code, you must give that code proper attribution.

Code Forums and Repositories

When trying to figure out how to debug a program or implement a desired particular behavior, you are encouraged to explore code forums like Stack Overflow and examine relevant code from code repositories like Github. However:

Generative AI Tools

There are now many generative AI tools based on large language models (LLMs) that can generate code in various programming languages in response to prompts that describe a specification of the code. Such tools include ChatGPT, CoPilot, Claude, and many others. There are also generative AI tools for generating images, such as DALL-E and Midjourney.

Although such tools are rapidly becoming popular for both professional and amateur software engineers and artists, they have some serious issues:

Because many students in this class do not have sufficient programming maturity to use them appropriately, you are strongly discouraged from using generative AI tools in CS317.

However, rather than simply prohibiting you from using these tools, the policy for this course is more nuanced. If you do use any generative AI tools in the course to generate code or images that you use in your projects, you must use the attribution policy below:

Proper Attribution Policy for Generative AI Tools

To properly attribute use of generative AI tools, in your comments, notes, etc. you must:

  • Provide the exact sequence of prompt(s) you gave to the system along with the response of the system to each response.
  • Describe any modifications you made to the response(s) for the code, images, etc. that you ended up using in your project.
  • Violation of the above policy is considered an Honor Code violation

    Please talk to Lyn if you have any questions about this policy.

    Collaboration Policy

    I believe that collaboration fosters a healthy and enjoyable educational environment. For this reason, I encourage you to talk with other students about the course material and to form study groups.

    However, in order to truly learn material, there are certain things you must do on your own (or with your project team members).

    As with consulting outside resource, similar ground rules apply for collaboration:

    1. Never pretend that code, images, or ideas due to others are your own. Doing so is considered an Honor Code violation.
    2. In some cases, you can use high-level ideas, techniques, and strategies from your classmates or other people with proper attribution. But you must never copy or adapt code from classmates or others who are outside your project team; that is considered an Honor Code violation.

    Collaboration has some complexities that are addressed in the following notes. If you are unsure of the boundaries of acceptable collaboration, please ask me = Lyn. In the case of the collaboration policy, it is far better to ask for permission than to seek forgiveness!.

    Lateness Policy (including the notion of "Dueish")

    I have adopted a version of Ada Learner's lateness policy from CS342, which I like a lot. Some of the wording in this section is adapted from Ada's.

    Assignments have two purposes: to help you learn, and to help both of us assess your learning (so that you can learn better, and I can help you learn better). Because assignments play such an important role in your learning, it is very important to me that you do the assignments. As a consequence, I do not deduct points for late assignments, since I find that doing so discourages completing the assignment and gaining its learning-related benefits. For this reason, I use the term dueish with regard to assignment submission dates to emphasize that "it is recommended that you submit the assignment by this date, but there is built-in flexibility to submit it later". However, there are important ground rules for late submission:

    The purpose of this policy is to help you balance the requirements of this course with your mental, physical, and emotional health. I recognize that your personal life is important, and my goal with this policy is to help you find the flexibility you need. You are never expected or required to tell me any personal or private details of your life. However, I am always available to listen should you feel that sharing anything will help me support you.

    A major downside of this policy is that, if you are not careful, it can lead to an accumulation of late work that is impossible to complete by the end of the semester, which may result in an incomplete grade (see the section on Incompletes below). This is why it is very important to frequently communicate with me about any delays longer than 2 days.

    Seeking Help

    I (Lyn) will be happy to answer any questions you have about CS317 material, in the following ways:

    Some other notes about help:

    Disabilities and Accommodations

    Thanks to Ada Lerner for some of this wording.

    My job is to help each and every one of you learn, and part of that is making accommodations for any disabilities you might have. Please feel free to speak with me about concerns or suggestions about how I can make the course more accessible to you. I will never judge you or your disabilities, and I will keep the details of our conversations confidential. If you prefer, you may instead use the Anonymous Feedback Form for this class. Though you are welcome to share any details that will help me assist in your learning, you are never required to share any private details of your life with me.

    If you have a disability or condition, either long-term or temporary, and need reasonable academic adjustments in this course, it is also strongly recommended that you contact Accessibility and Disability Resources (ADR). If they know about your accommodation needs, they will send me an email describing your accommodations. It is also a good idea to meet with me early in the semester to discuss your accommodations. If you need immediate accommodations, please arrange to meet with me as soon as possible.

    You should request accommodations as early as possible in the semester, or before the semester begins, since some situations can require significant time for review and accommodation design.

    If you are unsure but suspect you may have an undocumented need for accommodations, you are encouraged to contact ADR They can provide assistance including screening and referral for assessments.

    Grading

    Project Grades

    Each project will be graded on a 100-point scale according to a rubric that is specified for that project.

    By default, all project members will receive the same score on the project. However, a required part of submitting each project (for Projects 1--6) and each milestone of the Final Project will be filling out a Time and Work Form in which you reflect on the contributions of you and your partners to the project. Project grades may be modified to take into account information in these forms. For example, if both members of a project pair agree that one member did significantly more work than another, the member doing less work may get a lower grade.

    Grading Feedback

    The graders will provide feeback on all projects and final project milestones via Google Docs that will be shared with the all members of a project team.

    We will make every effort to provide feedback on your work in a timely fashion. I will typically strive to have your work graded within 7 to 10 days of submission, though somtimes (especially in the case of grading code for large projects like Project 6 Path Recorder or the Final Project) it may take longer.

    Course Grade

    Your course score will be determined by a weighting of your scores for your projects and your final project milestones. Here is a tentative weighting for the projects this semester to give you a sense of their relative weights:

    Based on the weighting, grades will be allocated according to the following boundaries. (Descriptions in parentheses are the definiition of grades provided in the Wellesley College Grading Policy.)

    The A grade threshold is set at 95% rather than 93.33% because (1) there is no A+ grade and (2) according to the Wellesley College grading policy, "Grade A is given to students who meet with conspicuous excellence every demand which can fairly be made by the course.". The 95% threshold better reflects this standard, and is used in many CS courses.

    In past versions of this course, almost all students earned a grade of B or above, and there were many A and A- grades. But this current version of the course has some individual project work that the previous versions did not.

    I give these details just to tell how I grade, not to foster a preoccupation about grades. I encourage students to think of grades like Monopoly money. Sure, it's nice to get lots of money in a game of Monopoly, but it doesn't have a big impact on the rest of your life. Focus on learning rather than grades.

    In keeping with the Wellesley College grading policy, there is no limit on the number of A grades in the course, nor is there a goal for a particular grade to be the average grade in the course.

    Credit/Non

    You may take this course Credit/Non, which means:

    For students who receive a grade of C or higher in a course that they have elected to take Credit/Non-Credit, a notation of CR (credit) will appear on the transcript; for students who receive a grade lower than a C, a notation of NCR (no credit) will appear on the transcript.
    G

    During Spring 2024, the deadline to declare Credit/Non is Friday Feb 16 @ 11:59pm ET.

    Some things to think about with regard to credit/non:

    I strongly encourage any student considering taking the course credit/non to meet with me during the first fewweeks of the semester to discuss this decision.

    Incompletes

    Due to extenuating circumstances, some of you may run out of time/energy to complete this course in the way you would like. In this case, an option is to take an incomplete. In this option, you have until the beginning of classes in Fall 2024 to submit your incomplete work.

    The fact that much work for CS317 is designed to be done in teams makes taking and incomplete in CS317 more complicated than in other courses.

    If you are considering taking an incomplete, you must have a conversation with Lyn about this possibility.

    There is no shame in taking an incomplete, but it does mean that you are putting off work now that you will have to do later. On the other hand, you may have more time over the summer than you do during the Spring semester to devote to the course materials.

    An incomplete in a course required for the CS Major is potentially problematic in the case of graduating students who are in their final semester, since it usually means the delay of their diploma.

    Another aspect of taking an incomplete is that an "I" mark will appear next to your final grade indicating that it was the result of finishing an incomplete course. If you have a medical (or other major) reason for taking an incomplete, you can have a discussion with your Class Dean and request an excused incomplete, in which case the "I" mark will not appear.

    Flexibility and Feedback

    The contents of this syllabus (and the associated course schedule) are my (Lyns) current best guess of how things will proceed, but they are tentative and subject to change.

    I need feedback from you on what is working and not working about the course. At any point, you may email me with any ideas about how to improve the course. If you prefer to give anonymous feedback, you can fill out the anonymous feedback form below:

    Anonymous Feedback Form

    Here is a form for providing anonymous feedback to Lyn. You must be logged in to a Wellesley Google account to use the form. However, however neither your email address nor any other identifying information will be recorded.

    Faculty Responsibilities on Disclosures of Discrimination, Harassment, and Sexual Misconduct

    Wellesley College considers diversity essential to educational excellence, and we are committed to being a community in which each member thrives. The College does not allow discrimination or harassment based on race, color, sex, gender identity or aexpression, sexual orientation, ethnic or national origin or ancestry, physical or mental disability, pregnancy or any other protected status under applicable local, state or federal law.

    If you or someone you know has experienced discrimination or harassment, support is available to you: