Previously on Advanced Programming with Java...
This is the first time in many years that I've had the opportunity to teach the 11-week version of the course. We tried out some new things like required pair and mob programming. Students also had to write automated tests for their assignment. And we did Android again. Let's see what the students thought about the experience.
- What do you wish you had known before taking this course?
- More about Android/app development
- Test driven development
- The website for the course was very descriptive and hence I had an idea before about how the class would be. However I wished that I had brushed my java skills very well so that it would help me with projects. Also I had some unforseen circumstances during the term however I'm thankfull that David was very supportive with delayed project submissions.
- Any prior Java experience. The learning curve was pretty steep since I had no knowledge on it.
- I wish I had known more about Android before taking this class.
- I wish I knew I already needed solid background on java and maven.
- In terms of the course itself, I initially wished that I had realized it was a flipped course sooner. I had picked the course thinking it would be more mangeable with my new full-time job and taking care of my child, so it was actually much more work than I had anticipated. That being said, I'm really glad that I didn't know because I learned a LOT from the course and love practical classes even if it was quite hard to juggle. In terms of course content, I wish I had been better equipped to do succeed at the REST assignment. I'm still not entirely sure why I found it so difficult as it was one of the topics I was most interested in, and had enjoyed implementing similar programs in python and javascript. I think I will continue working on mini-projects to solidify that knowledge. Also, the stream readers were continually an obstacle in the majority of programs. That was quite frustrating, but I do feel that I have a better handle on it now (still nowhere near perfect, but better).
- Honestly, I wish I would've looked into the assignments a bit more. I knew about the idea of building up a project over the term, but I didn't really get into the details of it.
- Nothing. The scaffolding of the course felt appropriate and even as someone who had never programmed in Java before the class I never felt overwhelmed.
- I had wished I would be more proficient in Java programming.
- Nothing - if anything, I think this class would be better coming into it with no java knowledge. If you already know how to use the Java Collections it's a very slow start...
- Some Java industrial experience working on big projects and some Android development basics
- I feel like the material was taught more than sufficient enough that I was comfortable with learning the topics in class. TDD was new in practice to me, and I am perferctly happy to have learned it in class as opposed to having prior experience.
- Hard to say, probably unit testing.
- I wish I knew more about using shell scripts so I could generate and submit the projects with fewer issues.
- Writing basic test cases, maybe through some youtube tutorials
- Android. Workload was more than I expected.
- I wish I had known programming Android application prior to taking this class.
- Can't think of anything. Despite having litte experience with Java before taking this class, I was able to learn everything I needed during the course of the term.
- I wish I has known more about working with servers and clients. It took me a while to get my head around that subject. Because of that, I had difficulties starting the project at first.
- I wish I had taken it when I had more time and energy to devote to the class. It was a great class, and while I feel like I got a lot out of it I know I could have gotten even more out of it.
- That I needed a better computer, and working with web servers.
- More insights about Java and dependency injection.
- I wish I would of known it was using Maven and Intellij. I think if I was more familair with those tools the early part of the class would of been smoother.
- I wish I had known more about Maven and Gradle.
- I took this course when I had a lot of other things going on. I did this despite the explicit warning that this is a senior level course and time intensive, so it's on me. I do wish that I had given the learning curve of the tools the proper respect, as this was a barrier at times. I wish I had better exploited the examples in class as starting points for projects.
- Nothing - it didn't require too much preexisting knowledge.
- N/A
- I wish I knew more about the structure of the course and the material we would be covering.
- I wish I knew how useful it would have been for my previous internship. I would have taken the class sooner
- Nothing..
- What is the most important thing you have learned in this course?
- Better professional habits and common skills for the current market
- Test Driven Development
- The best part of the class for me was learning android coding. This is the first time ever that I was exposed to android and it was fun to learn and experiment.I liked worked with various layouts, views. There are a lot of things to learn but overall it was intresting and gained some good knowledge on the same.
- Probably making my classes reusable so they can be used . I hadn't had much chance to practice reusuability in my code, so this was a good opportunity.
- The most important thing I have learned in this class is that TDD is a very effective way to develop software, and it is very good at helping eliminate bugs.
- Rest API
- That senioritis is real and not to judge my friends about it. I'm only half-joking. I learned that I really enjoy mob programming, and that has made me tell another team at my work that I would love to join them when they mob, after they invited me for an initial mob that I was unable to attend. I don't think I would have felt comfortable with joining if it weren't for the experience from this class.
- I found it to be quite insightful to observe bigger projects and get a glimpse of the many moving pieces it takes to assemble them.
- Programming to the interface. Use the flexibility of Java to your advantage.
- The most important thing is about writing unit test for classes. I learned a lot about the test coverage because I hadn't used it before.
- The REST API and Android components were totally new to me, so it was good to get experience with those beyond the high level overview I originally had. I would have liked to have an extra project that extended the Android app to something bigger - implicit intents, internet, maps etc.
- I have learned how to work on a big Java projects and test them too using test cases.
- It is hard to nail down just one thing. This is one of the very few practical programming and practices classes at PSU. Maven, TDD, XML, Android, all offered new learning experiences, as well as gaining more insight into normal Java practices. I was well familiar with Gradle beforehand, but the use of Maven filled in some gaps in my knowledge as to how they tie together.
- Client/server communication using Java! I'm also very happy that my understanding of OOP and TDD have improved significantly.
- How to think critically in an object-oriented way when coding and designing solutions.
- Testing and Introduction to Android Development Concepts like Pair programming and Mob programming
- Brushed up on java. A little android basics. I learnt how to write test cases.
- The most important thing I learned was how to test functionality of your code using JUnit.
- The value of Test Driven Development for sure. Getting experience actually doing it would be second.
- The most important thing I learn in this class is how to learn new things, whether it be how to use new tools or how to use apply new consepts.
- Test Driven Development. I had only used TDD as an exersice for very small problems. I had never used it for a whole project before. I noticed the quality of my code improve on the projects I used TDD for in this class.
- The different Java libraries and utilities.
- Project development flow and experince of pair and mob programming.
- Learning TDD the correct way was very benificial.
- I learned how build really strong tests for TDD. I also learned the hard way to make sure to implement classes correctly the first time in order to save time when that class would have to interact with another class.
- TDD, but I'm still learning on that. I enjoyed passing around XML and all the associated code. The REST API felt like a fundamental concept that I'm grateful for exposure to.
- Maven, Gradle, and Android. The TDD was okay, but using Java build environments is invaluable.
- Test Driven Development
- How to write unit and integration tests using Test-Driven Development.
- I think the most important thing I've learned is how to work with industry process flow. By this I mean using a package manager, performing Unit test, frequently commiting code and doing TDD.
- building a small program w/ different useful tools
- If you could give one piece of advice to someone taking this course in the future, what would it be?
- I would recommend that new students refresh themselves on the Java language basics.
- Learn to code with constant testing. Test driven development changed the way I see programming.
- I would say that, please brush up your java beforehand and also give good amount of time to the project work. This course is a lot of work if taking with other heavy courses. So we would need to balance it well.
- I think you could provide more guidance on how to make the classes more reusable and/or scalable. I often found myself going back and refactoring my classes everytime I worked on a new project.
- My advice would be to give yourself plenty of time to learn Android before project 6.
- 1. Ask questions if you have, because they will continue will all consequent assignments! 2. If you don't have STRONG background with java, then don't take this course [ be sure you are confident with java ]
- Factor in the amount of time it will actually take to watch the course videos several times over and work on the programs, and even if it wil be hard, take the class anyway because it is an invaluable, practical-application class experience.
- I would just recommend that they test their program all they can, double check the project requirements so as to not miss anything, and always remember to run it on the PSU server!
- Follow through on the TDD. It is an incredibly useful skill to develop and will help on ensuring your assignments match the requirements.
- By taking this course, I have been more proficient in using Abstract Classes and Interfaces. The most interesting part is about unit test.
- The 4-hour lectures are rough, especially if you've just finished work. Don't skip dinner!
- Make sure to revise some of the basic Java that you know so there won't be any problem in this course and you would never feel that you are lagging behind.
- Come to class. Period. If you know Java, you'll learn Test Driven Development. If you know TDD, you'll learn about Maven. If you know Maven, you'll learn standard development practices. If you know standard development practices, you'll learn about team coding. I could go on and on...
- Start working on the projects ASAP, don't hesitate to ask questions.
- Learn a bit about using shell scripts so you can generate and submit the projects with ease and use the language documentation it's the best resource.
- Get started ahead of time. Reach out on slack, because the issue could be something trivial that you don't need to spend a lot of time on.
- Have more time for this course. Start the assignments well in advance.
- I would advise them in utilizing any sort of testing program to test the functionality of your code.
- Work hard, don't be afraid to ask questions, have fun!
- Take notes on the online lectures. A lot of information gets thrown on you all at once. Taking notes can make it easier to absorb.
- Start the projects early. Really, start them early. If you start them close to the due date you won't get as much out of the project and won't produce quality code.
- If have a computer with only 4GB of ram, don't take this class. Also, work on the assignments early so that you can ask questions in class. I found that I didn't find a good time to talk about the projects in person until it was too late.
- Along with discussions about the Project, it would be great if you could taught us few concepts in the class.
- Testing is the vast majority of the projects
- Projects 1-4 are pretty simple, Projects 5, 6 are much more intensive, especially project 5. Even if you don't start your project, make sure you are thinking about how to implement your ideas and classes.
- Respect the tools, give them the time they demand. There's a substantial learning curve on every project. The concepts (and code) are cumuliative. Also, because PSU is so C++ centric, don't underestimate the challenges of Java. Programming languages have some hurdles besides memory safety, mainly arcane APIs.
- Ask lots and lots and lots of questions in Slack.
- Set aside a lot of time to work on the projects.
- Start the projects early, there's always more than you expect and stuff will break.
- I would say start early if you can. Give yourself at least 5 days to work on the projects particularly for project 4 and 5. Also poke around in the IDE, have it do the hard work for you.
- be prepared to spend a fair amount of time on projects
- What made you stay in this course?
- Lots of good practical knowledge that isn't present in many other CS courses and a kind, welcoming learning environment!
- It helped me understand the full scope of software development. I feel more confident moving forward working with other engineers because of the MOB and peer programming assignments.
- Initially it was very overwhelming, however because the porjects were developed in stages there was a room for learning and comfort of developing stage by stage. I liked the idea of having the unit test and IT, also because the professor and students were always active on slack and got answers for most of the issues from the slack read, I found that I could sail through this.
- Learning about things like TDD, IntelliJ, and different aspects of software engineering
- The projects are really good. I enjoyed building up a application from a small couple of classes to a full blown Android application.
- I think it's beneficial to know about topics covered regardless of grade received.
- I don't mean any offense when i say this, but the number one reason was because I needed to continue in order to graduate, which would be factored in as a measurement of success at my work, and to keep my word to my daughter that the 4 out of 6 years of her life that I have been at school is finally completed. I genuinely did find the classes and subject matter interesting. I think that if I had taken this course earlier on without the full-time job and senioritis that it would have been easier in many ways because it wouldn't have taken so much additional mental effort. Most of my favorite classes have been those that have practical application to learn as I find them the most valuable and this would be one of them.
- Java, java, java.
- Interesting subject material, great lectures, and I liked how we kept building up the same project.
- Simply learning more about Java.
- Well aside from the money I spent... I was particularly interested in learning the Android component. The Pair and Mob programming was fun too.
- The projects started getting more and more interesting as the course progressed. We started from a simple app to a fully featured app.
- I had wanted to take this class since Freshman orientation, but I never attended a Summer term. My prior Java experience made the work straightforward, but the complementary pieces (Maven, TDD...) taught me a lot. I needed the elective credit, but I was more interested with this class in the material; I would've taken it even if I didn't need the credit.
- I wanted to learn Java, OOP and TDD. I am also glad that I got expirience working with XML and, most importantly, with REST. Even though it was not easy, I felt that I really learned new and usefull materials, and concerning XML, got an idea why and when it can be useful.
- The professor is amazing, and the course work taught me a lot about important topics.
- I was learning each week. The deadlines were manageable. The professor is not too strict, works nicely with students.
- I liked the course.
- Java and programming Android applications interested me alot, especially since it is very prominant to learn both in the work force.
- The value I felt I was getting from it. This has been one of the most practical classes I've taken at PSU, not to mention one of the most enjoyable. I don't think I've taken another class in which I've been looking forward to doing the work as much as I have in this one.
- The projects made me stay in this course. I feel like I learned a lot from them.
- I really enjoyed it and think it is more directly applicable to future jobs than other classes.
- The projects seemed like real projects that you may work with in industry.
- The project development seemed to be good as adding features in steps felt like working in sprints. I would good learning experience and exciting to see grades for test cases we wrote.
- The class moved at a good pace and was interesting
- I wanted to wrote the Java Android app. It turned out really well, and I'm proud do be able to say I wrote a functioning app.
- Instructor investment, as I did have some lousy earlier submissions that would've sealed my fate and led to me dropping if I hadn't been encouraged to resubmit. But also because I really enjoyed the content.
- The... credit requirement? It's an okay class, but I'm taking it because I need the credits, yo.
- Learning TDD.
- I wanted to try out android development
- I think the projects are fun and the difficulty of the class is just right.
- life
- If you had to remove one lecture from this course, which would itbe? Why?
- One of the introductory lectures (or at least shorten them). I think that the other information is really valuable generally and in the context of Java programming (i.e. dependency injection or REST)
- none.
- I personally struggled with XML project . Which does not mean that it should be removed just feel that I needed a bit of more detailed explanation and what and why are few things done in a certain way. Most of the things designed as part of the lecture seem releveant and helpful.
- Probably one of the Android lectures. I want to say this in most respectful way, but I felt like your Android lectures were too long and hard to follow along. There are many YouTube videos that are much more concise and straight to the point.
- If I had to remove one lecture from this course, it would have to be the lecture on the Web stuff because I would rather have more stuff about Android. The Web stuff seems really out of place in since it's sandwiched between some heavy Java and Android lectures, and the large shift from Web technologies to Android is a bit jarring.
- The one on Reflections. While the content was useful, I don't think it really stayed in my brain as well. The topics that related to our projects were what I learned and will likely go on to remember better.
- I actually can't say: I downloaded all of the lecture notes and went through these on my own. I would expect most everyone to be familiar enough with Java to not necessitate the core java api stuff.
- The reflections lecture. It was very interesting but was probably the least impactful lecture for the actual coursework.
- I think I would advice to remove the lecture of Java Servlet. I'm not comfortable with using Java for RESTful APIs. I think there are more powerful tools than Servlet for handling RESTful requests such as JS and Python.
- The functional programming lecture seemed a bit out of place, since we never really had to use it. Also, the basic Java API/Collections stuff is way easier to just google than watch a lecture on, but that might just be my approach to learning.
- Week 7. As I didn't get much idea about dependency injection and if that lecture had not been in this course, it wouldn't have affected me much.
- I would not remove any of the lectures. Each one helped build a skill set that directly correlated to a homework project.
- It is very hard to say. I would say that my least favorite topic in this class was Android development. I really don't like working with any GUI in general, but even though it was interesting to touch on Android, it really felt like we touched just the tip of the iceberg. Completing this course made me feel like I am ready to apply for Java software developer positions, but I don't feel confident mentioning my Android experience on my resume, since even after completing Project 6, I did not gain any confidence in professional Android development.
- all of the java segments of the lectures are vital but I could have done without as much pair programing.
- The project I enjoyed least was Project 5: A REST-ful Airline Web Service. The client/server communication was frustating at times because debugging was hard. There were many limitations and server issues too.
- None. But There should be a lecture on how to setup a project like this on maven on your own.
- The introduction to java lectures were pretty cut and dry. Most of us already learned how to do things like that.
- If I had to remove one, I guess it would be the lecture on Java Reflection since we don't actually have to know how that works in order to do well in the class. But I would only remove it if I had to, since it's still an interesting topic.
- I wouldn't remove any lecture. I feel I gained valuable information from them all.
- That is hard to say. I think the later lectures were necessary for completing the more challenging projects and the earlier lectures were important for understanding the basics of java and the project environment. Personally I had a hard time seeing the board so would sometimes tune out during live coding and watch the screencast later when I could actually see it.
- I believe all the lectures were important, and we never fell behind even when we missed a class.
- All seemed to be useful and new learning opportunity.
- I think all the the lectures were interesting, but I do not think the first Kata was challenging enough.
- None. They were all pretty important and I gained a lot of knowledge from each of them.
- Dependency Injection. Possibly with a more general lecture on a few different design patterns. I know an intern at work who'd never even heard of design patterns, and I was shocked, as he's a really bright guy. It seems to be a concept often referenced in industry that doesn't get a lot of attention at PSU.
- I'd actually argue that we didn't have _enough_ material to work with. Most of the later lectures were "Hey, I don't have anything to show, so what do you want to talk about?"
- Maybe reduce the available Pair/Mob session to add more lectures.
- Some of the mob-programming parts. I don't think we need 3 different lectures with major parts dedicated to mob-programming.
- I can't really say. If anything I would have like more lectures and not just on one day a week.
- all are useful