Skip to content

Latest commit

 

History

History
340 lines (265 loc) · 17.9 KB

introduction.md

File metadata and controls

340 lines (265 loc) · 17.9 KB

Hello CMPSC 302 Students,

Read This Email Carefully

This email is very long and includes many details about the CMPSC 302 course. Instead of bombarding you with many short emails, I decided that it was best to write you one long email that you can save and review frequently. Please take your time to read and regularly review this email so that you are comfortable with how the instructor designed the course, what type of work you will complete, and the ways in which the instructor will assess your work. To ensure that we effectively use our in-person course time, the course instructor will assume that you have carefully read this, and any other necessary follow-on emails, before the start of the Fall 2020 semester.

Introduction

At the outset, you should know that I am writing this email to all of the students who are either registered for the course or who are on the waiting list for the course. Please understand that it is very likely that I will be able to add all of the students on the waiting list to the official course roster on the first day of classes, August 31, 2020.

Since I want you to stay up-to-date with the planning for our course, I encourage you to visit the following GitHub repository for more details:

https://github.com/Allegheny-Computer-Science-302-F2020/cs302-F2020-plans

Even if you do not yet have a GitHub account, you will be able to follow along in your web browser to see the planning that I am doing for the CMPSC 302 course.

Since I also want you to be able to easily communicate with me and the other students who will be in the course, I have setup a Slack workspace. You can sign-up to join the Slack workspace for free at this web site:

https://join.slack.com/t/cmpsc302fall2020/signup

If you are not sure how to visit the planning site on GitHub or to signup to our Slack workspace, you can reply to this email with your questions. If you get stuck on a certain step, don't worry, I will be glad to help!

Remote Learning

Before I start to explain the details of this course and the way in which I will teach it, I want to be upfront about the fact that some learning activities that you will participate in this semester will involve remote interactions. With that said, I'm confident that you will receive a top-notch introduction to web development through these remote learning opportunities! I also want to stress that learning how to work in a remote fashion will make you more competitive for securing a position at a technology company. If you have any questions about remote learning, I hope that you will ask them in a public channel in Slack --- I am glad to address any concerns that you have!

Course Textbooks

There is one course textbook:

  • Fundamentals of Web Development (2nd Edition) by Randy Connolly and Ricardo Hoar, available at: https://is.gd/5JbSoD

Course Teams

To ensure that students can participate in an in-person class in a safe and socially distanced fashion, the instructor will divide the course into two teams that will meet on a schedule announced at the start of the Fall 2020 semester. Within these two teams, students will be assigned to smaller sub-teams of individuals with which they can collaborate during the completion of designated class activities, like the completion of an assignment or the creation of a response to the weekly technical question. The instructor will provide more details about your course team assignments after the Fall 2020 semester starts.

Learning Activities

This class uses the Markdown, HTML, CSS, and JavaScript programming languages to equip you with the technical skills that you will need as a web developer. Through the exploration of web development technologies and the creation of a web design portfolio, you will:

  • Remember and understand facts about web development

  • Apply and analyze new technologies in web development

  • Evaluate new solutions to the challenges in web development

Some specific activities that you will complete include the following:

  • Read the course text book to prepare for in-class activities.

  • Review the course slides in advance of hands-on in-class activities.

  • Watch course videos on YouTube that the instructor creates to guide you through an activity where you apply, analyze, and evaluate new approaches to solving problems in the field of web development.

  • Participate in online live coding sessions where you use video, audio, and text to collaborate in real-time with the course instructor to implement a solution to a web development challenge.

  • Participate in remote and socially distanced pair programming sessions with (i) other students in the course, (ii) the student technical leaders, and (iii) the course instructor as you refine your technical knowledge and skills in the context of a programming task or a laboratory or practical assignment.

  • Ask and answer technical questions about web development in the course's Slack workspace and during in-class problem solving and discussion sessions.

  • Complete short and focused practical assignments that help you to master specific web programming skills using the course's main programming languages.

  • Complete extended laboratory assignments that help you to engineer and evaluate full-featured solutions to real-world programming challenges using newly developed knowledge about web development techniques.

Project Assessment

You will complete all of your course work through an industry standard system called GitHub. All students will create a free GitHub account at the start of the Fall 2020 semester and use it to receive starter materials and submit the final version of each laboratory and practical assignment and examination.

You will receive rapid feedback on your work through a tool called GatorGrader. The course instructor will define GatorGrader checks for each of your laboratory and practical assignments and your job will be use web development programming languages like HTML and CSS to implement a complete solution that passes all of the GatorGrader checks. You can learn more about GatorGrader and how it works by visiting the following web site.

https://github.com/GatorEducator/gatorgrader

Taking inspiration from the principles of specification-based grading, the grade that a student receives on the laboratory assignments and the web design portfolio will have the following components:

  • Percentage of Correct GatorGrader Checks: Students are encouraged to repeatedly try to implement a web-based system that passes all of GatorGrader's checks by, for instance, creating a program that produces the correct output. Students should also repeatedly revise their technical writing to ensure that it also passes all of GatorGrader's checks about, for instance, the length of its content and its appropriate use of Markdown. The status of each check run by GatorGrader will be available to a student on their own laptop and in a GitHub dashboard available in a web browser.

  • GitHub CI Build Status: Since additional checks on the source code and/or technical writing may be encoded in GitHub CI's actions and, moreover, all of the GatorGrader checks are also run in GitHub CI, students will receive a checkmark grade if their last before-the-deadline build passes and a green checkmark in their GitHub commit log instead of a red x. As with the previous grading component, students are encouraged to repeatedly revise their source code and technical writing in an attempt to get their GitHub CI build to pass, thereby enabling them to earn the checkmark for this component of their grade.

  • Mastery of Technical Writing: Students will also receive a checkmark grade when the responses to the technical writing questions presented in the writing/reflection.md reveal a mastery of both writing skills and technical knowledge. To receive a checkmark grade, the submitted writing should have correct spelling, grammar, and punctuation in addition to following the rules of Markdown and providing technically accurate answers. Students are encouraged to ask the course instructor or a student technical leader to use the GitHub issue tracker to provide feedback on their mastery of technical writing skills.

  • Mastery of Technical Knowledge and Skills: Students will also receive a checkmark grade when their GitHub repository reveals that they have mastered all the technical knowledge and skills developed during the completion of this project. As a part of this grade, the instructor will assess aspects of the project including, but not limited to, the inclusion of effective source code comments, creation of effective Git commit messages, correct use of Docker, implementation of an efficient web page, and correct installation and use of a full-fledged web development environment. Students are encouraged to ask the course instructor or a student technical leader to use the GitHub issue tracker to provide feedback on how well their work demonstrates mastery of the assignment's technical knowledge and skills.

The sole grade for a practical assignment will be the GitHub CI Build Status, meaning that you will receive either a checkmark or an x for the completion of the assignment, as described in the above paragraph.

All grades for course projects will be reported through a student's GitHub repository using either messages in the GitHub commit log or issues raised in the issue tracker. Students should ask questions about their grade for any project in GitHub so as to facilitate an effective conversation about the submitted deliverables and to ensure that a student can ultimately master all of the technical knowledge and skills developed as part of that assignment's exploration of a specific topic in the field of web development.

Project Feedback

Students who wish to receive feedback on their work for either a practical or a laboratory assignment should first open an issue in the issue tracker of a project's GitHub repository, giving an appropriate title and description for the type of feedback that you would like the course instructor and the student technical leaders to provide. After creating this issue, a student will see that GitHub has created a unique web site that references this issue. To alert the course instructor and the student technical leaders to the fact that the issue was created and that you want feedback on your work, please send it to them by a Slack direct message at least 24 hours in advance of the project's due date. After the instructor and/or a student technical leader responds to the issue, please resolve all of the stated concerns and participate in the discussion until the issue is closed on GitHub.

Learning Assessments

Students will have numerous opportunities to demonstrate that they have mastered the technical knowledge and skills in the field of web development. In addition to giving students feedback on all of their in-class, laboratory, and practical assignments, the course instructor will invite students to complete the following course assessments, thereby better helping them to assess their mastery of course content.

  • Short, weekly mastery quizzes that are administered through a web browser and for which a student will automatically receive a grade upon quiz completion.

  • Two interim examinations that the course instructor will respectively administer after about the fifth week and tenth weeks of the semester. Students will use GitHub and a text editor to complete both of these examinations under the Allegheny College Honor Code.

  • A final examination that the course instructor will administer on the day set for the final examination. Students will use GitHub and a text editor to complete the final examination under the Allegheny College Honor Code.

Using GitHub repositories, both the interim examinations and the final examination will be conducted in an online fashion in an un-proctored fashion. Students will have a set period of time to complete the examinations and will be expected to complete them in accordance with standards that uphold the Allegheny College Honor Code. The course instructor will assess the interim and final examinations and report a percentage grade to a student through GitHub.

Weekly Technical Questions

Each week of the course will have a guiding technical question designed to focus all of the in-class activities and to ensure that students are developing a thorough understanding of the key topics in the field of web development. Students should use their textbooks and the course slides, videos, and live coding sessions to develop and submit a comprehensive response for each week's technical question. At the end of the week, students will use GitHub and a text editor to submit an answer to the question, for which they will receive an checkmark-based assessment and feedback from the course instructor.

Technologies for Learning About Web Development

  • IMPORTANT: All students must have a department approved laptop to take the CMPSC 302 course. You can learn whether or not your laptop meets the guidelines for being a department approved laptop by visiting this web site:

    https://www.cs.allegheny.edu/resources/laptops/

    IMPORTANT: If your laptop has Windows 10 Home then it DOES NOT meet the requirements for a department approved laptop. Students who plan to use Windows for the completion of work in CMPSC 302 must have Windows 10 64-bit Pro, Enterprise, or Education.

  • You will use Docker Desktop to run programs that the course instructor provides to you through a Docker container. To learn more about Docker, you can visit the following web site:

    https://www.docker.com/products/docker-desktop

    To learn if your laptop can run Docker Desktop, please visit this web site:

    https://www.cs.allegheny.edu/canirundocker/

    IMPORTANT: All students are required to run Docker Desktop on their laptop so as to ensure that they can run the instructor-provided Docker containers.

  • You will implement web pages and web-based programs in the following programming languages: Markdown, HTML, CSS, and JavaScript. We will use Markdown and HTML to create the content for our web pages. You will use CSS to add style to the web pages that you create with Markdown and CSS. Finally, you will use JavaScript and JavaScript frameworks to further improve the styling of your site and to add additional interactivity options.

  • You will use the VS Code text editor when you need to implement a web page using the aforementioned programming languages and write technical documentation in Markdown. Students who want to pair program with the course instructor, one of the student technical leaders, or another student in the class should also use VS Code's Live Share feature. Although students may elect to use a different text editor than VS Code, the course instructor and the student technical leaders will only be available for remote pair programming and debugging through VS Code. You can learn more about VS Code by visiting this web site:

    https://code.visualstudio.com/

  • You will use a terminal window to allows you to execute commands such as the creation of a web server or the rendering of a static web site. Students may consider using a customized terminal for their operating system or the integrated terminal in VS Code. Students should work with the course instructor and the student technical leaders to ensure that their chosen terminal window will support all of the course activities, such as running a web server, generating a web site, starting a Docker container, and running an project assessment tool like GatorGrader.

  • As mentioned throughout this email, we will use Slack to support course communication and GitHub to support the delivery of course materials to a student and the submission of completed projects to the instructor. Some of the features of GitHub that we will use throughout the semester include, but are not limited to, the issue tracker, the project board, and actions. Students must also ensure that they have the git command-line client available for use in their terminal window and through VS Code. Finally, students must be able to access their GitHub repositories both through the use of a secure-shell and through their web browser.

While the course instructor does not expect students to have all of of the aforementioned programs installed on their laptop on the first day of class, you are encouraged to explore all of these programs during the remainder of the summer, if possible. The course instructor and the student technical leaders will be available to help students learn how to use all of these programs.

Conclusion

I hope that you are looking forward to exploring web development as much as I am!

Throughout this semester you will be given the opportunity to master many technical skills in the field of web development, thereby preparing you for upcoming courses and an internship in the technology field. We will be using state-of-the-art technology to design and implement mobile-ready web sites that leverage the most recent advances in CSS and JavaScript. One way that the course will prepare you for work in a STEM field is through the use of cutting-edge remote collaboration tools such as YouTube videos and live streams, GitHub, and Slack.

Again, I recognize that this email is long and very detailed! As I mentioned before, I decided that it was better to send you one detailed email than to send multiple short emails. Don't forget that you can follow along with the planning for the course by visiting the following GitHub repository:

https://github.com/Allegheny-Computer-Science-302-F2020/cs302-F2020-plans

I also encourage you to signup for our Slack workspace and to begin a discussion with me and your classmates by clicking the following link.

https://join.slack.com/t/cmpsc302fall2020/signup

Going forward, except in the case of an emergency where we must use email, the course will rely on Slack and GitHub for all course announcements and discussions. Okay, I hope that you will keep in touch with me throughout both the remainder of the summer and the entire Fall 2020 semester!