# CS571 Building UI (React & React Native)

## Course Overview

- University: University of Wisconsin, Madison
- Prerequisites: CS400 (Advanced Java. But in my opinion you only need to master one programming language)
- Programming Languages: JavaScript/HTML/CSS
- Course Difficulty: 🌟🌟🌟
- Estimated Time Commitment: 2 hrs/week (lecture) + 4–10 hrs/week (HW), 12 weeks

This course provides a comprehensive but concise introduction to the best practices of React front-end development and React Native mobile development. It focuses on the latest versions of React and React Native and is updated every semester. It is a valuable resource for tackling the complexities of front-end development.

The course also offers a good training ground. Be prepared for a significant workload throughout the semester. The techniques and knowledge points involved in the homework will be explained in class, but code won't be written hand by hand (I personally think that hand-holding code writing is very inefficient, and most courses on Udemy are of this type). As this isn't a hand-holding course, if you are unsure about how to write React code when doing homework, I recommend spending extra time carefully reading the relevant chapters on [react.dev](https://react.dev/reference/react) before diving in. The starter code also provides you with a great starting point, saving you from coping with Node.js environment settings.

Although this course doesn't require prior knowledge of Javascript/HTML/CSS, the classroom introduction to syntax is relatively limited. It's recommended to frequently consult resources and ask questions when encountering syntax issues during learning and coding.

This course also includes an introduction to and practices for Dialog Flow, a ChatBot development tool by Google. You can also find content related to UX development (on the practical side) in this course.

All course materials and assignments are open-source, but you will need to request an X-CS571-ID header from the instructor, Cole Nelson (ctnelson2@wisc.edu). The header will be necessary for API request. When sending an email, it is advisable to include a brief self-introduction. It is unclear whether the instructor is willing to give everyone an ID. If you got turned down, please [raise an issue for this GitHub repo](https://github.com/PKUFlyingPig/cs-self-learning/issues/new/choose).

## Course Resources

- Course Website: <https://cs571.org>
- Course Videos: Refer to the links labeled "R" on the course website.
- Course Assignments: Refer to the course website for more information.
