Previously on CS410J...
This year we had a really cool classroom that had five mob programming stations. We took it for a test drive and got some interesting results.
- What do you wish you had known before taking this course?
- More experience with general web and GUI programming would probably have been helpful.
- I wish I had had more understanding of REST and HTTP, but project 4 lead me to good questions for which there were good resources. I wish I had known that the textbook was worthless so I wouldn't have spent money on it.
- I wish I better understood how client and servers interact with each other on the java side of things. I was pretty overwhelmed during Project 4 when we had to develop the REST client but I figure that was the best way to learn, now that I have completed Project 4 and Project 5 I have a much better understanding of the way services and applications interact.
- I wish I had known more about distributed programming and design patterns like the listener used in the minesweeper-gwt example. I spent a long time spinning my wheels trying to implement a listener for a very small UI feature (switching panels upon creation of a valid phone bill), which unfortunately will be reflected in other features being rushed.
- I wish I had known more about build tools like Maven. I felt like too much was handed to me (I was grateful, however) and I still don't feel confident I could build a decent Java program from scratch or even a simple project like we did in class on my own.
- I wish I had done more front end type web development prior to taking this class. That is the only area of the course that gave me headaches.
- I thought everything in general was fairly laid out. I would probably make project0 worth couple of points so students get to become more familiar with the submit process, maven, and how the grading behind it work.
- GWT, more GUI design experience
- That I would need to deal with Google Web Toolkit.
- Nothing, all the material I learned challenged me, but not in a bad way.
- Although I do not feel particularly unprepared for anything that the projects within this course covered, I do wish that I had more background working with servers and clients prior to taking this course. Learning how to use and getting used to using both REST and the GWT to develop a RIA took longer than I would have liked (which, at times, took away from the amount of time that I was able to dedicate to actually programming my projects).
- I wished I had known how to setting up the projects in the beginning so I wouldn't spend so much time on it to figure out why the project didn't run, such as installing maven, work in Intellij, and running the project in command shell. The first step of getting used to the new environment is always the hardest.
- Better understanding of web technology. It would have helped to know basic web communication.
- Would have been nice to know how much the work load was going to be before-hand, having said that, it wasn't too bad.
- A little more web programming would have made the last two projects a bit smoother.
- That java has special libraries like for date formatting. I knew it had libraries, I just didn't think about them extending that far. I also wish, I'd learned more about "safely handling errors" previously. That really caught me off guard toward the beginning of the term.
- Nothing really. This class well prepared me for all the assignments.
- Nothing really. I felt as though CS202 and CS300 prepared me for all I needed to know in this course and be successful.
- Nothing in particular, I feel the course material and layout is good about introducing new tools and frameworks.
- Personally, I just needed to be more comfortable with Java. Things were golden after the first program.
- There isn't much I wish I would have known. The entire reason I decided to take this course was so I could work with java and understand the power of the language better, and I seem to have done that. Going in not knowing much about the language really helped me reach this goal.
- Time management.
- Nothing that I can think of other than knowing the volume of work that would be required to be successful.
- I've done a lot of Java programming independent of classes and I have also had experience working with Maven and Git. So I felt very prepared for this class.
- The amount of material that was covered on-line instead of in-class. Personally I learn best by in-class instruction and this class was ALMOST a web-class. That said, the resources made available were good, don't get me wrong. It's just not my prefered pedagogy.
- It would certainly have helped to have more experience programming in Java, but then that's why I took the class to begin with. I felt reasonably prepared.
- I wish I had a little bit more experience with client / server interaction and implementation in the lower level courses. This was the first course that I had an introduction to any type of web development, so the learning curve was a little bit steeper for me.
- GWT and REST
- I can't think of anything that wasn't part of the learning process.
- Nothing. All I need were described here.
- I knew core java concepts but I wish I had better knowledge of working with files and IO. Also my knowledge of collection was limited, It got improved in class but having practical knowledge of comparable and other interfaces helps in the projects.
- What is the most important thing you have learned in CS399J?
- Probably testing; there has only been a light focus on writing tests in other classes so far, so that gave a good view of something that will likely be reasonably useful in the real world.
- Assuming the question means "CS410J", I think the most important thing I've learned is about HTTP and Rest-ful clients. I've never dabbled in network communication before, so that was very new and very helpful.
- I think the most important thing to take out of this course is the way in which you can develop a program with java using object oriented principles and then abstract it out to something like a webapp or some type of client. Keeping those principles for all types of coding is beneficial because it keeps things organized and easy to understand.
- I'm torn between the value of learning new tools and frameworks vs the paradigm shift of distributed programming (understanding client/server interaction was a long process). Needless to say, this class gave me a lot of exposure to real-world programming ideas.
- The most important thing I learned in CS410J is how to properly apply TDD. I will probably forget a lot of the particulars of advanced Java if I don't regularly revisit them, but TDD is a tool I can apply to any language I'm working with.
- The most important thing I've learned in CS410J Adv Java is working with GWT along with learning about and working with REST in our assignments.
- The client/server interactions, which made designing and creating your projects much more challenging since now you had to deal with multiple programs running.
- GWT, REST
- That Google Web Toolkit is, and I really honestly mean this, useless and without redeeming value in the landscape of Java-based web development libraries.
- GWT. Using it to write web code and run on a server is incredibly useful to me personally and my career.
- One of the most important things that I've learned in this course is how to utilize all of the tools that are available to us when working with Java. I think that realizing that there exists frameworks, classes, etc. that are fully capable of supporting functionalities that we wish to implement helps significantly in the long run because instead of losing time to figuring out exactly how to, let's say, implement the inner workings of some ADT, we can use that time to further plan our projects from a higher perspective and deal with what might be considered more important matters (e.g., meeting a client's requests).
- Definitely problem-solving skill. In this class, I've encountered countless instances when I got stuck or got error while coding the projects. I would run the debugger and track the errors or search the errors on stack overflow to get it running again. I think the most important skill to have is to be able to figure out ways to solve the problems.
- Client server communication in Java. Both through servlets and with GWT.
- Good tests make life easy. Also GWT is cool.
- Aside from just getting extremely familiar with the Java language and Unit testing (This is the first class that has even used or mentioned them), just building confidence in my abilities as a programmer.
- It taught me to more safely handle errors, and to be careful with my test files. Also I think Projects 4 & 5 were especially useful. Project 4 helped with learning about REST. Project 5 introduced us to one of the methods of doing client server interaction.
- I thought the GWT was pretty important. Being able to program in a client and server aspect is important and its rare to do programming assignments like that on your own time since the resources are limited.
- I've learned a lot of Java syntax that I did not previously know. I was forced to work with objects such as Date's, Collection's and GWT widgets that I had never utilized or used before. I was able to gain some experience working with a client and a server, which was a first. Programs 4,5 were probably the most interesting and fun projects to work on all term.
- For me, the most valuable thing is the first-hand experience using tools like Maven and JUnit. Thanks to my work with them in the class, I was immediately able to put them to use in projects for other courses, and I intend to keep using them in the future. Practicing TDD comes is as a close second.
- TDD, refactor and or change code BEFORE it breaks/becomes a problem. I noticed my parsing functions weren't scaling well between program 1 and program 2. So before program 3 I decided to refactor/rewrite my parsing code. The foresight really saved my bacon!
- The most important thing I learned would have to be how http requests work in terms of get and post. I had no idea how this worked before this course and it helped me a lot at my internship where we use JSF to develop a website. I was able to leverage the knowledge I learned in this class to help myself in my internship which was great.
- Dependency injection and tdd
- Test driven development was very helpful and I believe will aid in my future career in software development.
- The work with REST and GWT was my favorite, as it was the thing newest for me. I have never done any Web application development before.
- I haven't taken CS399J. HOWEVER I assume you mean 410J. With our on-going projects and weekly coding experience, I'd say two things we really driven home for me. 1) Really think things through and plan them out ahead of time. It's easy to just dive in and start coding, but that can lead you down dark paths. 2) The importance of keeping methods and classes small and simple. Don't try and do too much. Just refactor! Sure, that means there might be a lot of classes in a project but they'll be easy to read, fix, test, and change.
- Assuming you mean CS410, I would say that beginning to learn programming with a Test Driven Development approach is the most important thing I have learned.
- Piggybacking off of the previous question, I think the client/server and web development was the most important thing I've learned. Most of us are getting ready to enter the real world and get jobs where we'll be expected to write software that actually does something, so I'm glad that I gained some understanding of how things work so that I'm more prepared for a future job. Looking back on the class, I think about if I had taken another class instead of this one and I get stressed with how much I would have missed out on, so I'm definitely glad to have that exposure.
- How to use junit and test driven development and how to work with server and client.
- I learned how to work with GWT. I've done some Java programming before, but very little web development.
- GWT. TDD.
- In CS410J I created lots of test cases, something which I never done before. Test driven development and detailed knowledge of files, IO and client server is my best intake from this class. Being able to finish bug free projects on my own was real achievement.
- If you could give one piece of advice to someone taking this course in the future, what would it be?
- Don't get behind or procrastinate.
- Start the projects early and test before you code.
- Take some extra time to fully understand what it is you are doing. At first I felt like I was running through the motions in terms of linking up maven archetypes, intelliJ, github, and then eventually the client/server apps. After completing the program and doing some research while I was writing them, I felt a lot more comfortable about the concepts behind what I was doing and why they were important, not just that I should follow the instructions.
- Definitely don't get behind. Always have questions to pose to the G+ community, the TA, or Dave about lecture material or homework assignments to stay engaged and on task.
- Don't skip the lectures. If you do miss lectures, don't skip any of the material. Even if you attend all of the lectures, watch all of the videos again. In short, watch all of the videos on the class website.
- Start on the assignments early and be watchful of the google+ community communications or whatever communication tool used by your class.
- Things can at times get time consuming and frustrating. Just crank up the music and have fun with it.
- brush up on your Java
- Read through all the projects at the start of the course and see if there's functionality you're going to need to use over and over again. Focus on making that easy to re-use.
- Start on the projects early :)
- My advice would be to take advantage of and participate in the discussion page. I am glad that the discussion page was so active because at times, I found myself running into the same problems that a classmate had previously posted about on the board - and whenever it had already been answered by the time that I had encountered the problem always gave me a sigh of relief because it saved me a step as well as some time. As for participating in the discussion boards, I think that if you have a question, you should not be afraid of asking it, because in a class as large and as diverse as this, someone else is bound to be wondering the same thing too - so you might as well just ask it.
- Start on the project early, don't procrastinate, keep up with the lectures, come to class lectures and listen to the screen casts at home.
- Do not fall behind. The course requires a substantial out of class time so schedule accordingly.
- Start projects early and put in work on them consistently.
- Don't forget about d2l.
- Don't leave projects till the last minute. Instead, enjoy the relief you feel of seeing half the class panic 24 hours before the due date knowing you're already finished. Seriously, a few of the projects take significant time.
- Scan ahead on the projects, and find things that are in common (such as the phone bill class). Then do as much as possible in those classes or in secondary classes. Such work might include input validation for example. Make good test methods that thoroughly test all placements of options, and can be updated for when military time switches over to am/pm.
- Don't be scared. Just because its called Advance Programming in Java does that mean its intimating. Take this class and learn all the unique stuff java has to offer and toy around with those ideas until it makes senses.
- 1. Watch the screencasts before beginning any project. This helps minimize the backtracking when running into problems during a project. 2. Get started EARLY!!! This cannot be said enough. Many of the applications were simple enough except for the tedious error checking and figuring out how to go about for example parsing command line arguments. 3. Read the community posts!! They are super helpful and I often used other classmates' responses to answer my questions. They were a great resource (especially the students that started early and therefore had questions early!!) and rarely did I need to look elsewhere for answers to my questions.
- If you're already somewhat familiar with Java, you'll find that the course is fairly backloaded; the first few projects will seem much easier than the last two. Be prepared for the jump in the workload, and start early.
- Think about the program design, don't just rely on the IDE to code it for you. Know/understand what you are doing in the IDE and why it (the IDE) is wanting to code something in a particular way.
- Don't wait until the last day to start the assignment.
- Pay more attention to GWT
- Get familiar with Git and version control prior to this class. I don't think any previous PDX classes I have taken required the use of Git/GitHub.
- Just because you have 2 weeks to turn in a project, don't wait. You were given 2 weeks for a reason! Also, YouTube videos have an option to watch them at 1.25 or 1.5 speed which makes it easy to breeze through them if you can understand rapidfire english. :)
- Be prepared for a fast pace and putting in plenty of hours on the assignments.
- I would advise them to sink their teeth into the course because the amount of information and resources is mostly unmatched by other courses at PSU. I would also tell them to get involved in the G+ community and to stay up to date with that page, because there's always little bug fixes and bits of information that can be really helpful.
- Not much, make sure you familiar with java API that you will use in the project first before you start a project.
- Don't fall behind on the projects!
- GWT took a lot of time start it earlier.
- Its different than other courses running at PSU, the more time you spend on your project the more you learn. And If you finish your project early then try different things to implement in your project.
- What made you stay in this course?
- Are drops really *that* common? Probably the fact that the course had a clear structure was the most appealing to me.
- Why would I leave? I would only leave a course if I thought I was going to fail and couldn't switch to pass/no pass or what-have-you. Honestly, I like programming, but I'm not very self-motivated. Having challenges set for me gives me a reason to work hard. Java is a fun language and I like working with it, even if it doesn't seem to be a lot of peoples' top choice these days.
- Java is clearly a useful programming language to know for a career in computer science and it is also a very user-friendly language to write in. So far I have not enjoyed any programming languages as much as Java and this course was perfect for honing some of the fundamental skills a Java developer should have.
- I wanted to gain the knowledge of real software development practices. Once I realized that all the command line programming I've been doing was 80s style, I was intrigued.
- Above all I enjoyed the course. I enjoyed doing actual programming on a project that evolved throughout the course. Although the project was simple, the principles behind it were important and can be applied to larger and more complex projects.
- Other than needing this class for the upper division elective requirement for graduation, I stayed in this class because David was interesting to listen to and very knowledgeable about the subject.
- Java is a widely used language. It's simple but hard to master and be very useful in the future, so why wouldn't I stay? (P.S. Also needed the credits ._.)
- I need Java for my work, plus flexibility to watch lectures at home.
- Opportunity for practice. Need an upper-division elective.
- The cool material I was learning, and the fun learning environment.
- I stayed in this course because I really liked the idea of building atop a basic program to produce something of more substance by the end. I also liked that each project introduced at least one thing that I had not worked with before.
- I need the credits
- This is the one of my most favorite CS classes that I've taken. I really like Professor Whitlock. He introduced new challenging concepts but he was able to deliver the information to us in a clear and to the point explanations and every lecture, which tends to be emphasis more on coding demonstrations was very easy to follow. I have learned many interesting Java language APIs and concepts. Moreover, I had the chance to work on the PhoneBill project from scratch and developed it to a fully functional PhoneBill web application. That was very rewarding!
- Java is interesting and the professor seems to really enjoy what he is teaching.
- The web stuff was interesting, the last two projects were great. Don't often get to do client/server stuff in school.
- It was good to have a heavy programming course as practice as I near degree completion and the projects were challenging but useful in learning.
- I was hoping this course would help me straighten out my life, and I have no where else to go! Seriously, though, I wanted to learn advanced java topics like libraries, REST, and GWT. I also like Java & C# so I had immediate interest in a Java specific class.
- I was really looking forward to program 5, since I looked into this course before the term even started. I was fascinated about creating the GUI and programming with server and client programming.
- Too late to drop! (jk) I felt I was weak in Java and couldn't confidently say I was a Java programmer. I knew that it was a language that I would have a high chance of using once I finish with school and I didn't want to need to shy away from using it. I figured an advanced java course would get me more comfortable with the language and give me more confidence in building applications with it.
- I really enjoyed the course material, and Dave went out of his way to make in-class lectures engaging and inclusive.
- The challenge! I dislike paying for a easy class, this is a technical degree we better be challenged to learn something. I also like that this class is fairly analogous with real world examples.
- It was a lot of fun. I really enjoy programming and seeing my designs come to life and this course made it fun, especially when we started to implement UI where I could add my own style to my work. Also, it was nice that we kept building on our previous assignments. This helped me think about how I should be designing projects for longevity and really helped with my refactoring skills.
- I wanted to know more about java development. The web development process was probably what I was most interested in learning.
- New and interesting content, very applicable to real-world programming problems (unlike many of the theory-centric classes I have taken in the past).
- "Failure is not an option." -- Gene Kranz. But seriously, I enjoyed a class where we did LOTS of programming. The CS department doesn't often require programming in the classes. A lot of math and logic and theory, but not a ton of programming. So I enjoyed the opportunity to do lots of it, and to continuously revisit existing code and improving it. There wasn't a class I didn't touch from one project to the next.
- I enjoyed the course and the instructor's lectures. I have gained a lot of Java knowledge — good reasons to stay enrolled.
- I want to be a better software developer and it was pretty apparent early on that there were some really good resources for learning in this course. The idea of building onto one program each project was also fun, because having something to "show off" and feel good about is important.
- The projects was fun, and made me learn things.
- I need a CS elective so I can graduate.
- I like Java and all things we do it.
- I never wanted to leave the course, I chose it because I knew I want to do this.
Want to hear what other people had to say? There are lots more comments from previous
terms.
David Whitlock