1. Node
a. Keep track of any changes you made to your back end as you implemented
your front end. What changes did you need to make and why? If you could go
back in time, is there anything you would change about the way you
approached making your back end for HW1?
I did not actually have to make that many changes to the backend, other
than exposing types to the frontend, changing the backend to be hosted at
the api endpoint and adding a couple of tests. If there is anything I wish
I did differently it would be to make sure that I refactored the tests so
that my book and author tests don't end up being 90% of the same code that
I copy and pasted back and forth.
b. When adding books and authors, did you only use server-side validation,
or did you also use client-side validation? What are the pros/cons of
making either choice?
I did pure server side validation because I already spent a lot of time
making sure that my abckend could handle any input properly. The benefit
of server side validation is it ensures that no bad actor can sneak bad
data into your server. However adding client side validation helps a
legimately user make a successful request.
2. React
a. What was your general experience using React? What did you struggle
with? What did you enjoy?
I already had extensive experienceusing React and I enjoy it quite a bit.
I think it's much cleaner and more scalable for bigger proejcts than
simple vanilla JS/HTML programming (aka CS 375 stuff). I think that the
one downside of react is when you get long type errors where the problem
is quite simple but the error message for a type is really long and
ambigous. Also accidentally getting infinite refreshes sucks but that is
kind of a skill issue.
b. Compare and contrast writing React versus writing plain JS DOM
manipulation code as you did in CS375. How was your experience different?
Which do you prefer and why?
As I already mentioned above, using useState and useEffect feels a lot
cleaner and easier than plain JS DOM manipulation. I love being able to
create reusable components and the fact that I can type my code, it really
makes a difference in terms of DevX. The one part where vanilla JS is
nicer is the lesser reliance on these giant libraries but who actually
cares about JS bloat in 2026?
c. What was your experience using types with the front-end? Did they catch
any bugs? Did you struggle to type things correctly? Did they feel
helpful, useless, tedious?
Types definitely helped me feel more confidnet that my code would be
working and helped me catch event handler bugs as I knew what parts of an
onClick event I needed to use to retrieve data from the event. I think
sometimes typing, especially for tiny things, is a bit tedious but its
definitely worth the effort.
3. LLMs
a. Did you use LLMs to help you write your code? If yes, explain how you
used them.
I used LLMs mostly for debugging, I think a larger usage than that of LLMs
for this assignment just inhibits my learning and isn't in my best
interest. I could definitely see Claude Code Opus 4.5 one shotting all of
these changes from assignment 1 but I am here to learn and not churn out
code. I think I also used it to debug a bug I had with the sortTo function
when I was trying to sort my items, but that's really it.
b. If you used LLMs, reflect on how they changed your experience of
coding. Did they make it more or less fun? Did they save you time? How do
you think they affected what you learned from this assignment?
I think my limited use of LLMs for this assignment made the tedious bgs
you can get with frontends much easier to resolve and the assignment more
fun. Also whenever I had a code style or function question the LLM could
tell me the answer and show me the best way to do something, I really
liked that. So overall, it didn't transform my experience significantly
but it was a nice to have.