Course Objectives: The ultimate goals for this course are to prepare students to work close to the architecture of a system using C language including topics of threading and sockets. In particular: Memory, Sockets, and Threading.

The student is expected to have an understanding of basic data structures cover in Programming I and II (but a class in data structure already taken may provide an easier time COP-3530), object-oriented programming (COP 2210 and COP 3337), and computer fundamentals (CDA 3103). While this class will use linux/unix to work in lots of their problem, the student is not required to know unix/linux but knowing it in advanced of the class may beneficial. In particular, how to edit a file (vim, emacs, or nano), compiled a basic C file (gcc), and do basic operations in the terminals such as directory listing (ls), copying (cp), and moving (mv), among others. Nevertheless, The student will be given enough information to do this. Some students may prefer to edit their homework in their editor of their choice (e.g., Sublime) and then copy the files to a linux/unix server (using sftp or any other methods).

If you are already running a unix/linux systems (including macosx, freebsd), you can worked directly in your favorite editor, without the need to use a terminal editor. Nevertheless, it is important that you at least know how to use a basic terminal editor. The nano and vim editors may be the simpler ones to use in the terminal. If you have Windows OS, you may want to install a virtual machine with linux. While there is a way to run unix/linux programs and commands without a virtual machine (using cygwin), it may best to have a VM running. Remember that you can use the school's server to run your code, without the need of anything but a terminal program like putty (windows) or ssh from your linux/macosx machine.
I like to use Sublime editor when using a graphical interface. If you are running your own linux box, then it will be much easier to use eclipse or other IDE to debug if you need it. However, it is also important to know how to debug with gdb and use terminal editors. If you are going to run your own linux machine, use the distribution you like best. I like debian. Nevertheless, your code must compiled and run in ocelot.aul.fiu.edu server. It must compiled with gcc -std=c99 -Wall ...

Integrated Development Environments (IDEs)


IDEs that work in Mac Os X, Windows, and Linux are: CodeLite, CodeBlocks, NetBeans, Eclipse. The question about the IDEs is less important compare to compilers. For compilers, use either gcc or clang. If you are running on macosx on the latest edition, your mac will have clang. MacOS X has XCode. Remember that some of your projects, I will use the command line to compile, so you have to be sure once you are finished with your project that it compiles in gcc. There are other compilers: clang (which is very nice and default in MacOS X) and Microsoft's compiler.

An important note of Visual Studio 2015. Microsoft has always lack the C support. Its C++ compiler is very good (in my opinion). Lately microsoft has provided support for newer C standards. Visual Studio 2015 supports C99 with a few exceptions. It is important if you compiled C code in Visual Studio, you set it to C only (see here how).

Tips

It is important that you read ahead. This is even more important when you are taking a summer class that last 6 weeks. You are expected to be an more mature student at this point. The instructor is here to help. Please let me know if you have any questions. If you don't have the time that this class requires, you may want to take in a longer semester.

The class will start with an introduction to C including memory allocation. I will then move to threads, and network programming. Depending on the time, we will also covered unix/linux systems calls and other topics, such as signals. However, in a six-week course, it gets more complicated to introduce topics. While I like C++ very much and it is the prefer language for me and my projects, this class doesn't have time to cover both languages given the topics that are required to be covered. If you want to learn C++, I can give you additional resources for you to read on your own. I may allow you to do your last project using C++ (yet to be determined).

The most important topics for this course are: C, Threads, Networking (sockets), and Some Linux Systems calls. Whenever possible, we will use C99 standard. Depending on time, I will modified topics.

Pre-requisites: See CS Flowchat

Time and Location: TuTh 6:30PM - 9:50PM - ECS 143

Grading:

  • Project 1: 15%
  • Project 2: 25%
  • Final Exam: 30%
  • Mid-term: 20%
  • Quizzes 10% (You can drop the lowest quiz).
  • Grading Scale:

  • A: 93+
  • A-: 90
  • B+: 87
  • B: 84
  • B-: 80
  • C+: 75
  • C: 70
  • D: 60
  • F: 57 and below
  • Note: There is no C- or D+ anymore.
  • 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. Of course, you can come to my office after the semester and find out.

    About assignments and projects

  • Information will be provided via moodle. Some guidelines are provided here in the syllabus.
  • Late assignments received a 15% deduction. Cut-off date may be between 24 to 48 hours (upon my discretion).

    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.
  • 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.
  • Instructor is not compelled to give credit for something he cannot read or follow logically.

    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.

    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.

    Important Dates:

    Holidays (university will be closed)

    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.

    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.

    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.