Course Description:

This course covers networking fundamentals, network security, network applications, mobile and wireless computing. The course focuses on network programming, including sockets and web programming concepts.

Course Objectives/Outcomes:

  • Master socket programming and transport layer services
  • Understand web programming concepts (This does not mean to develop web applications).
  • Be familiar with network architecture and OSI network model
  • Be familiar with internetworking, routing, and congestion control
  • Be familiar with link layer access control concepts
  • Be familiar with applied cryptography and other network security concepts
  • Be exposed to wireless and mobile networking, multimedia networking, and network management

Co-requisites:

  • CEN 4010 (Soft. Eng). This means that Net-Centric must be taken at the same time with Soft. Eng. (Co-requisite goes one way, check with catalog for more information)

Prerequisites:

  • COP 4338 (Programming III)
  • Students must be familiar with data structures.
  • Students must be proficient in programming. This course will briefly cover Python language but students are expected to be self-sufficient when it comes to programming. Students will be able to use Python, C, or C++ for their projects unless specified by the assignment. Students are expected to know C (from Programming III).
  • Students should have basic skills of using Linux and its command line tools (shell, gcc, etc.)

Final Exam:

U01: TBA ; U02: TBA

Electronic Equipment During Class:

While I'm fine if you use electronics for class, I reserved the right to ask you to put any electronics away either in a one by one case or the entire class. In other words, you are an adult and I want you to utilized electronics devices to aid your learning but if I think it is a distraction, then I will ask you to place them away. This is specially true for phones during class.
As a default rule, I do ask you to remain from having your cell phone in display and keep it on vibrate mode only (or off). I also ask you to refrain from recording audio or video (or both) during class without prior permission from the instructor. If you make notes with your tablet or computer, you can let me know, in order for me to be aware of that.

About Cheating

I have adopted the following text from Prof. Thomas Cormen at  Dartmouth College (with his permission).

Don't cheat. You know what cheating looks like. I know what cheating looks like. Don't do it. Make sure that you have understood the Academic Honor in http://integrity.fiu.edu/. If you need more details on what constitutes cheating, read on.

On exams, all work must be your own. You may work on short assignments individually or in groups. Programs that you turn in, however, should be created, typed, documented, and output generated, yourself. For the lab assignments (if any), you may consult freely with instructors and classmates during the phase of designing solutions, but you should then work individually when creating your programs—typing, documenting, and generating output. During the debugging stage you may discuss your problems with others in the class, but you should not copy code to "fix" bugs. To do otherwise is a violation of the Academic Honor Principle. If you work with a classmate on any assignment, you should tell us who you worked with in a comment at the beginning of your program.

You should attribute the proper source in any code that you submit that you did not write yourself. This includes code that you take from outside references—for example a book other than the course text. And it even includes code that you take from class examples, a book, or the assignments. (I agree that may be tedious to attribute the source in code that we have given you, but we want you to be in the habit of attributing your sources.) You may want to attribute sites or books that were helpful in any type of assignment.

Whenever we ask you to turn in sample runs of your program, the runs you turn in must be the result of actually running your program. It is a violation of the Academic Honor Principle to falsely represent output as coming from your program if it did not. If you change your program, make sure to generate output from the version of the program that you hand in. It's amazing how a seemingly minor change to the code can cause a big change to the output of a program. Also, make sure that when you are running a program, that it is your program; it is easier than you might think on a public computer to run a program that someone else had left on the machine.

In the past, we have had a few incidents in which students turned in output that did not come from the program handed in. In each case, it turned out that the student had made a foolish mistake (in not rerunning the program or handing in an old version of the program or the output) and had not intended to misrepresent the work. Yet it caused many an uncomfortable moment for the student and also for the student's section leader and for the professor as well. So please—pretty please with sugar on top—endeavor to verify that you're handing in output that comes from the very program you're handing in.

It is not easy to come up with good homework problems that help you learn a concept, are interesting, and require an appropriate amount of work. Over the years we have developed and refined a number of homework problems, and I plan to reuse some of them for this class. You should not look at any solutions to homeworks assigned in previous terms, including sample solutions, or solutions written by other students.

We have had some uncomfortable situations occur in the past, and I want to make it clear what the policy is. Two students, Alice and Ralph, discuss an assignment and design their code together. That is fine. But then they decide that since their programs would be so similar, they might as well have Alice type in the code, have Ralph make his own copy of the file containing the code, and then have Ralph make his own minor changes. This is a violation of the Academic Honor Principle. Although you may discuss and design with others, the code you hand in must be entirely your own.

Here's another situation that occurred. Trixie and Ed start working independently on a program. Trixie finishes and has a working version. Ed has trouble with his. Trixie helps Ed debug. That is fine. But then Trixie realizes that Ed has a section of code that is all wrong and the program she wrote has just the right code for that section. She shows Ed her program. Or worse, she gives Ed an electronic copy of her program so that he can just paste in the correct code. Either action is a violation of the Academic Honor Principle.

I realize that it can be hard to decide when you might be violating the Academic Honor Principle when we let you collaborate to a limited extent. Here is a good rule of thumb. If you are talking in normal English (or Chinese or German or some other natural language) you are probably OK. If you find yourself talking in Python code, you have crossed the line. So saying, "Your program runs forever because you have the wrong condition in the while loop" is OK. But saying, "Change while x == 0: to while x >= 0:" is not.

If you have any question about whether what you're doing is within the Academic Honor Principle, do not hesitate to check with me. If it's late and you can't find me, you're better off erring on the side of caution.

Most violations of the Academic Honor Principle come down to failure to cite work that is not yours. If you copy any portion of your program from your friend Elvira and represent it as your work, then you either intended to deceive or were careless about citing. Either case is a violation of the Academic Honor Principle. If you copy your entire program from Elvira but include the comment, "This code was copied in its entirety from Elvira," then you cited properly, though you didn't actually do the work. In this latter case, I would not report a violation of the Academic Honor Principle, though your grade on the assignment would be 0. But that would be far preferable to a more severe penalty.

The same goes for code that you find in some other book or on the Internet. You are in violation of the Academic Honor Principle if you fail to attribute your sources.

You don't need to cite if you wrote the code yourself. You don't need to cite just because you're using a construct you saw elsewhere. For example, you need not cite for using print("Hello"), even though it was in the class examples. That would be like citing "printing press" in an essay! Nor do you have to cite just because you use a while-loop, even though you saw a while-loop in a class example. It's when you lift several lines of code from elsewhere that you need to cite.

To cite, include in a comment—near the top of your file is fine—stating where you got the code from:

# Based on the sing_about_granite function in the March 27 lecture.
Please do not cheat. Cheaters—whether or not they are caught—bring dishonor upon themselves and upon everyone else at our institution. To do that, for just a few lousy points in a course, is not worth it. Furthermore, if you cannot solve the short assignments and lab assignments on your own, then you will be nailed on the exams. As you from the grading criteria, even if you get 100% of the points in the programming assignments, you won't get a good grade if you do badly on the exams. This will be another sign that something is going on.

Special note for when you work on a computer that anyone else might use

If you are working on a computer that is not yours or that someone else in the course might use, you should be very careful to remove your code from the computer when you are all done. You should probably email your code to yourself before you remove the code. Why do we tell you to remove your code when you're done? Because if you leave your code on a computer, and someone else can see it, then they can copy it and hand it in. If that happens, then we have a bad situation involving you (the copy-ee) and the other person (the copy-er), and it's difficult—if not impossible—to tell who was the copy-ee and who was the copy-er. By removing your code from the computer when you're done, you can avoid getting yourself into that situation. Of course, if the code is secure in our network, you may assume that it is fine. However, you are always erring on the side of caution. 

A final note, here at FIU, I had several cases of cheating. In most cases, they are caught. It is not worth it. For example, going to the bathroom while taking an exam is not possible? Why? Some students have gone to the bathroom and look up the test bank of the book to answer the question. 

I do understand that we are all busy. I do understand that sometimes we helped each other. However, copying is not worth it. Do your best. Work hard. Attend classes. Make sure you have the time for each class that you are taking. Finally, always attribute your information. 

Assignments:

This is a course that requires understanding of theory and provides hands-on projects. In other words we will emphasize hands-on experience as well as theory. Therefore, a level of programming maturity is needed to be able to be self sufficient with the projects and during exams.

I do ask you to reserve the time needed for this class depending on your own understanding of yourself. In general, I think a good rule of thumb is to reserved 10 hours (outside of class) to study while sufficient time for projects. There may be weeks you may need to adjust this. One student may only need 10 hours in total while another one may need 20-30 hours. Given that you have taken many classes by now, I do trust that you will manage your time wisely.

There will a set of projects/assignments to complete. Details and due dates will be posted in the Moodle course system. Project deliverables must be submitted through the Moodle system (no emails -- any email sent with a project will not be graded). All class-related questions should be sent to the instructor fortega@cs.fiu.edu with a subject line starting with the keyword “[CNT-4713 Uxx]”. (Where xx is your section). Please always identified yourself with the section and be specific about your question.

Language for Assignments:

Unless noted in course, the only languages allowed in this course is either Python, C, or C++. In some instances, the language will be specified. No other language unless specified by the instructor should be used. In the exam, you may answer either in Python, C, or C++. However, the instructor may ask you to use the same language you used for the assignment if needed. I do recommend to use Python, as it shorter and easier for exams.

Instructor's name and information (including office hours), see main course page

Status of Syllabus: Draft Current.

Semester: Spring 2018

Time and Location:

  • Section U1: ECS 143 - MW 17:00 to 18:15.
  • Section U2: ECS 143 - MW 18:25 to 19:40.
  • Always remember your section

Required Textbook(s)

  • Computer Networking. A Top-Down Approach by Kurose and Rose. Seventh Edition. Publisher: Pearson. (CNTDA). ISBN : 978-0133594140

Additional Textbooks

  • Introducing Python: Modern Computing in Simple Packages by Lubanovic [IP] (or if you are experienced in Python, you can use Fluent Python by Luciano Ramalho). (IP)
  • Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition). [UNP]
  • TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition) (Addison-Wesley Professional Computing Series) [TCP-I]

Tentative Outline/Topics

For a detailed schedule, please go to schedule.

The following topics is a tentative outline. However, we will follow the book and emphasis on the topics required for this class with the emphasis on Computer Science. This also means that I may add or drop topics as needed. It is best that you look at the schedule and the outline provided serves as a guide of possible topics (but not definitive). This outline also does not provide order. For that, look at the schedule.

  • Python
    • Variables
    • Blocks
    • Contol Structures
    • Methods
  • Introduction
    • Internet
    • Network
    • Delay, Loss, Throughput
    • Protocol Layers
    • Security
    • History
    • Wireshark
  • Application Layer
    • Network Applications
    • Web and HTTP
    • FTP
    • SMTP
    • DNS
    • P2P
    • Socket Programming
      • UDP
      • TCP
  • Socket Programming using Phython
    • socket
    • sendto
    • recvfrom
    • bind
    • listen
    • send
    • recv
    • accept
    • close
  • Web Programming Concepts (Understanding HTTP but not necessarily creating a web application)
    • Request Headers
    • Response Headers
    • GET
    • Query String
    • Parse Query String
    • POST
    • HTML Form
    • Parse Query String
    • Status Codes
    • Redirect
  • Transport Layer
    • Services
    • Multiplexing and Demultiplexing
    • UDP
    • Reliable Data Transfer
    • TCP
    • Congestion Control
    • TCP Congestion Control
  • Network Layer
    • Service Models
    • Virtual Circuit and Datagram Networks
    • Router
    • IP
    • Routing Algorithms
    • Internet Routing
    • Broadcast and Multicast Routing
  • Link Layer
    • Services
    • Error Detection and Correction
    • Multiple Access Links and Protocols
    • Switched LAN
    • Data Center Networking
    • Review protocols and messages in a web request
  • Security (Depending on available time)
    • Symmetric and Asymmetric Cryptography
    • Integrity
    • Authentication
    • Confidentiality
      • Email
      • TCP
      • IPSEC
    • Securing Wireless LANs
    • Firewalls and IDS
  • Mobile Networks (Depending on time)
    • Wireless
    • WiFi
    • Cellular
    • Management
    • Mobile IP
  • Multimedia (Depending on time)
    • Multimedia Applications
    • Streaming Video
    • VOIP
    • Real-Time Conversation Protocols
    • Support
  • Management
    • Infrastructure
    • Framework
  • Software Defined Networking
    • Controller
    • Northbound and Southbound

About Grading

Please note that FIU starting Fall 2016 does not longer have C-,D+,D-. That means that right after a letter grade C, you will earn a D, and then an F.

Grading:

  • Final Exam (in-class): 30%
  • Exams (2): 25% (You may drop the lowest grade)
  • Quizzes (in-class): 10% (you can drop the lowest grade quiz).
  • In-Class Participation (not the same as attendance but related): 5%
  • Programming Assignments: 30%.
  • Book Exercises will be assigned but they will no be collected or graded. However, they are part of the class and they may appear in the exams or quizzes.

    Grading Scale:

    • A: 93+
    • A-: 90
    • B+: 87
    • B: 84
    • B-: 80
    • C+: 75
    • C: 70
    • D: 60
    • F: 59 and below
  • Note: I may modified the scale if needed, but it will in your favor. For example, while A usually will stay in 93, I may lower A- to 89. This is done at the end and no information is provided during the process, since it happens after the final exam (except when time allows to inform all of you via Moodle). Of course, you can come to my office after the semester and find out or after finals.

    Performance measures that will be considered for grading

    In most cases, the questions in exams are not multiple-choice. Therefore, if the answer is not clear, the instructor will use judgment and experience to determined the evaluation of such answer. The instructor's judgement is used for all questions, projects, and exams. The judgment is based on the expected answer, experience of the instructor, and understanding of the level that this class is set. In particular, this class is a 4000 level course, which had already many courses taken, including Data Structures and Programming III. Therefore, the instructor expects a maturity level and this is considered during the evaluation.

    About assignments and projects

  • Information will be provided via Moodle and/or class. Some guidelines are provided here in the syllabus.
  • Late assignments received a 10% deduction. Late assignments are accepted up to 24 hours from deadline. Late assignments received between 24 to 48 hours (if moodle is enabled), it will received 15% deduction. No assignments will be accepted after that.

    Course Policies

  • Attendance: Attendance is not graded but it may be taken. Missing classes may affect your grade if we have graded activities.
  • Academic Misconduct: For work submitted, it is expected that each student will submit their own original work. Any evidence of duplication, cheating or plagiarism will result at least a failing grade for the course.
  • Deadlines: see Moodle
  • To get assistance, always email me before you come to my office to make sure I'm not with another student or doing some other work. See my office hours.
  • Students are encouraged to ask questions and to discuss course topics with the instructor and with each other.
  • DO NOT send assignments by email. Use Moodle for all communications and assignment submissions. Sending via email will only cause confusion. This is even true when Moodle closes and students will send emails with their assignment. Do not send me attachments via email, unless if I ask you for it.
  • Instructor reserves right to change course materials or dates as necessary.

    Exam Policies

  • Make sure to complete the assigned work in order to do well in the exam.
  • No discussion is permitted during the exams.
  • Part of the exam is understanding the question.
  • Instructor is not compelled to give credit for something he cannot read or follow logically.
  • No make-ups. In the case of verifiable emergency, the instructor will make an assessment on how to proceed.
  • I keep all the exams. You can review them the day after the exam and also during my office hours.
  • It is your responsibility to understand the requirements of the exam. Understanding the question is part of the exam.
  • Please do not make travel plans. If you are not here when an exam is given, it is an automatic zero on that particular quiz or exam.

    If is not here, then what?

    Anything not mentioned in the syllabus is left to the discretion of the instructor. You can always ask.

    Extensions

    please note that when you ask for an extension, the professor cannot give you an extension only to you because it will be unfair, but to the entire class. this brings another problem. Then it is also unfair for the people that did submit on time. Therefore, when asking for an exception, remember what you just read.

    Student Conduct and Learning Environment

    Florida International University is a community dedicated to generating and imparting knowledge through excellent teaching and research, the rigorous and respectful exchange of ideas, and community service. All students should respect the right of others to have an equitable opportunity to learn and to honestly demonstrate the quality of their learning.
    Therefore, all students are expected to adhere to a standard of academic conduct, which demonstrates respect for themselves, their fellow students, and the educational mission of the University. All students are deemed by the University to understand that if they are found responsible for academic misconduct, they will be subject to the Academic Misconduct procedures and sanctions, as outlined in the Student Handbook:
    http://globaldatebooksonline.com/flipbooks/FIU/#2
    YOU CAN ALSO DOWNLOAD A LOCAL COPY HERE: Student Handbook PDF - LOCAL COPY

    Can I change this document?

    From Faculty's handbook:

    Instructors retain the right to modify the course syllabus for any reason throughout the semester provided that:

  • Fair and adequate notice is given to enrolled students either by e-mail, in writing, or through online publishing.

  • Modifications to the syllabus are not arbitrary or capricious.

  • Students are not unfairly disadvantaged by mid-semester changes to grading standards, attendance standards, or performance measures.

    NOTE: In most cases, I will only change this document to accommodate the entire class. I will let you know if there are any changes.

    NOTE 2: Moving content around or changing topics is left to the discretion of the instructor, his undertanding of the current students, and it doesn't need to be notified.

    POLICIES:

  • Code of Academic Integrity:
        http://www.fiu.edu/~oabp/misconductweb/2codeofacainteg.htm
  • University Policies: academic misconduct, sexual harassment, religious holydays, and information on services for students with disabilities
        http://www.fiu.edu/provost/polman/sec2/sec2web2-44.htm
  • If you have any disability make sure you let me know with time to make any accommodation. Also, please make sure you check the FIU Disability Center web site at : http://drc.fiu.edu I will be more than happy to accommodate any part of this class, based on the recommendation of DRC.


    Incomplete Grade Policy:

    Only given in extreme cases and I reserve the right to deny an incomplete. In most cases, an I grade is given if you need to deploy (military service), serious and documented illness, or documented death of a family member. You cannot use an incomplete to get extra time to finish the class. You must have a passing grade at the moment you request the incomplete.

    Important Dates:

    • See FIU Academic Calendar here or by looking at the PDF provided by FIU.

    How to do well in this class (applies to all classes)

    The following items are what I found during my studies to help me. Maybe some will help you

    • Read the book/slides and any other material available to be presented at the class, BEFORE CLASS!  READ EARLY AND OFTEN!
    • Do your own work. Struggling to do homework is a good exercise that will prove to be a great asset in the future.
    • Always challenge yourself.
    • Remember that you are paying tuition. Therefore, try to get the most out of it!
    • Ask questions!
    • If you are having trouble in the class, you may want double the amount of time to study the course.
    • Always do additional exercises. Always read beyond the class!
    • There are great resources online. Use them. You are expected at this level to be able to be self-sufficient.
    • If you are in a graduate course (and it may applied to undergraduate level too), please know that you are expected to do excellent work. Anything less than a B is usually considered failing in graduate schools (of course, each program has their own rules).

    HOMEWORK:

    You will need to submit your homework via Moodle. When submitting homework to Moodle, you will need to upload ONE compress file (zip,rar) with the following format: LastName_FirstName_PantherID_HW#.zip (or .rar) Each homework will stay if you need to print out the homework or not before coming to class. The exception of this is when you are submitting a PDF.

    CLASS READING MATERIAL:

    Go to Moodle for lectures

    ADDITIONAL INFORMATION:

  • I will try to accommodate legitimate, verifiable cases of illness and emergencies. I do accommodate religious holidays.

  • Link to undergraduate student misconduct.

  • Link to graduate student misconduct.