COMP 348 (Network Programming in Java) is an upper level Computer Science course that is designed to extend students’ knowledge and practice in analysis and design of computer networks by focusing on computer network programming. To enroll into this course, students will either have to have COMP 268 (Introduction to Computer Programming in Java), COMP 272 (Data Structures and Algorithms), and COMP 347 (Computer Networks) or COMP 308 (Java for Programmers) and COMP 347 (Computer Networks).
Network Programming in Java is made up of fourteen units: three assignments weighing fifteen percent each, one assignment (a project) worth twenty-five percent, a participation and reflection mark of fifteen percent, and a final exam weighing fifteen percent. The fourteen units within this course cover topics from the prerequisite courses such as basic network concepts (COMP 347), java streams (COMP 268), and java threads (COMP 272); it also covers new concepts, such as internet addresses, sockets for clients, sockets for servers, secure sockets, and many other interesting concepts!
Students should note that the Java programming language will be used throughout this course. To be able to complete this course, you will have to have sufficient knowledge about computer networks, especially the internet, and some good programming skills in Java!
Students will also be required to download an Integrated Development Environment (IDE) for this course. My recommendation is IntelliJ, as it is free, it highlights errors, auto completes some text, and it has an integrated debugger that is useful for solving programming errors and can be useful for the required written reflections.
Mel Mirasol is an AU student who started a post-diploma in Computing and Information System program in 2012. He states, “I started with the first course in my program plan, which was ADMN 233 (Writing in Organizations), and I thought I did really well, so I decided to take two, then three, and finally a full-time course load on succeeding terms.”
He continues, “I started COMP 348, and three others, in December 2017. I’m usually good using long weekends to catch up on things so I convinced myself that the Christmas break will be a great opportunity to do school work. (Cue narrator voice-over: The Christmas break was not a great opportunity to do school work). Obviously, I accomplished very little because I was too occupied with holiday-related engagements. However, I finally completed this course in March 2018.”
When asked to explain the course, he states “Do you remember the time when people still ordered items through telephone? Households received catalogs and phoned businesses to order their products. Now, imagine you are a business owner and you decided to sell couches. You send out catalogs (including instructions on what to say when they call) and people decided to purchase your merchandise so they phone in. You only have one customer service representative (CSR) that takes orders, one shipper that ships the couch, and a dispatcher that delivers it. At first, this system worked. But your product line grew to include dining room, bedroom, and living room sets – the whole shebang! Your sole CSR can only process one customer at a time and as new calls come in, they are placed in a queue. Imagine if each phone transaction takes 10-20 minutes to complete, imagine how long the customer will be waiting if they are the 70th caller! Obviously, this is not an efficient system. So, you decided to add 30 more CSRs, shippers, and dispatchers. Now, at any given time, you are handling a maximum of 30 customers! This is the basic concept of this course: customers know which phone number to contact your business (ports and URL’s), you give them instructions on what to say when they phone in (protocols), and a CSR will take their request (threads).”
When asked what he liked and disliked about the course, he states “I totally enjoyed the course because I’m biased toward Java. You see, I’m a simple man, I see a course that says “Java”, I register. But seriously, I enjoyed it – I like working with streams, sockets, and threads. Also, as a .NET developer, it was a great refresher for me. I mostly do web-based applications now and developing Java programs once again was very refreshing.”
Mirasol continues, “What I liked the most about this course is its collaborative aspect. The tutor was heavily involved in the student discussion on The Landing. He encourages you to post ideas, articles, and share resources with other students. This is also a downside because not many students are fully-engaged so you see posts that do not have any comments or posts that do not generate discussions (e.g. assignment clarifications).”
When asked to describe the structure of the course, he states “The course is a mix of programming and participative work. Like many senior-level computer science courses, a certain standard must be met when submitting assignments. This means that you have to submit a test plan and your code must be fully-documented. Each assignment builds on the previous one, so you cannot just pick up assignment three first because it looks easier – no. However, the project could be started at any point, as it was a separate entity. Overall, I personally did not find the marker to be strict but they did provide details about my assessment. On top of the assignments, you must also post discussion items on The Landing. You will have to start a notebook and write down learnings, mistakes, and general observations. At the end of the course, the notebook will be submitted for grading.”
When asked to provide some information on the final exam, he states “Information on the final exam was actually outlined in the course manual. The final exam was divided into two sections – the first part is a discussion of the final project, and the second are recommendations that you have for the course. Therefore, it is essential that you finish the project and have collaborated enough that you can write something about it before taking the exam. Like any final exam, you are given three hours to finish it (which I thought was very generous) but you are not allowed to bring anything except for a pen. Yes, it’s paper-based!”
When asked if he would recommend the course to other students, he states “Totally! I believe this is one of the courses that all Computer Science students should take. If you work in IT, you will 100% have to deal with any form of networking – especially in development – so this course will equip you with the fundamental skills for that. If you have some networking background (and I guess it also applies to any kind of course), you might not find this course exciting, but I encourage you to keep an open mind and treat this as a refresher.”
When asked if there were any helpful resources that he would recommend to other students, he states “There are plenty of resources online and you should not just stick with the only textbook supplied. I believe this also applies to other courses. I will also highlight the importance of collaborating with other students, especially with the instructor. Don’t just post questions about the assignment but submit articles that you think are current and relevant. Definitely use JShell for prototyping! I use it for quick-and-dirty programming and definitely helped in this course.”
For those unfamiliar with Java Shell (JShell) it is an “interactive tool for learning the Java programming language and prototyping Java code. JShell is a Read-Evaluate-Print Loop (REPL), which evaluates declarations, statements, and expressions as they are entered and immediately shows the results. The tool is run from the command line.”
When asked if he had anything else to add, he states “What I also liked about this course is its openness for evolution: it takes input from the students about what they found useful and any ideas about what they think will boost student engagement. I think other courses should utilize this model because the feedback of students will definitely assist in making the course not just educational but also fun!”
Whether COMP 348 is a required course for your degree or program, or if the topics that were mentioned above are of interest to you, this course will teach you the basics of network programming!