Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Calculatoare şi tehnologia informaţiei
Programul de studii: Ingineria informatiei - in limba romana
Limba de predare: Română

SYLLABUS

I. Date generale
Codul	Disciplina	
MID0023	Programare Web	

Semestrul	Ore: C+S+L+P	Categoria	Statutul	
7	2+0+2+0	specialitate	obligatorie	

II. Cadre didactice cu norma de bază în Universitate
Numele şi	Titlul	Gradul	Departamentul	Tipul activităţii	
prenumele	ştiinţific	didactic		C	S	L	
BUFNEA Darius-Vasile	Dr. 	Lect.	Informatică	*			

Cadre didactice asociate
Numele şi	Titlul	Instituţia	Tipul	Tipul activităţii	
prenumele	ştiinţific		postului	C	S	L	

III. Obiectivele disciplinei
- Familiarizarea studenţilor cu principalele concepte, tehnologii atât client side cât şi server side precum şi cu instrumentele cel mai des folosite în programarea Web;
- Utilizarea elementelor de mai sus în proiectarea site-urilor Web de generaţie recentă.	

IV. Conţinutul disciplinei
1. Tehnologii Web
- Tehnologii client side, tehnologii server side.
- Conţinut static vs. conţinut dinamic.
- Instrumente de dezvoltare şi exploatare în programarea Web: navigatoare, editoare, parsere HTML, XML, CSS.
- Importanţa independenţei de browser (cross browser).
- Server Web.
- Domenii, URL, URI.
2. Limbajele HTML (HyperText Markup Language) şi XHTML (eXtensible HTML)
- Sintaxa şi semantica. Structura unui document HTML si XHTML.
- Tag-uri, tipuri de tag-uri, atribute, valori.
- Tabele, liste, cadre, imagini.
- Formulare Web.
3. Protocolul HTTP
- Formatul cererii şi a răspunsului.
- Metode HTTP, GET, POST.
- Antete HTTP.
- HTTP/1.1 vs. HTTP/1.0, virtual hosting.
- Cookie-uri.
- Încapsularea datelor trimise de client.
- Cookie-uri HTTP, sesiune, caracterul stateless al protocolului HTTP.
4. CSS (Cascading Style Sheets)
- Selectori, tipuri de selectori, tipuri de stiluri.
- Formatarea şi gestiunea stilurilor.
- Prioritatea şi ordinea de aplicare a stilurilor CSS.
5. CGI (Common Gateway Interface): principii
- QUERY_STRING.
- URL encoding & decoding.
- Implementarea CGI în C / C++ / shell.
6. JavaScript, jQuery
- Elemente de baza ale limbajului JavaScript.
- DOM (Document Object Model). jQuery. DHTML.
7. PHP
- Elemente de baza ale limbajului.
- Accesarea bazelor de date.
- Managementul sesiunii din cadrul tehnologiilor server side.
- Mecanisme de includere server side. Master page.
8. AJAX
- Principii fundamentale, XMLHttpRequest.
- AJAX folosind jQuery.
9. Securitate Web
- SQL injection, SMTP injection.
- Cross Site Scripting.
- Validări client side şi server side în aplicaţiile Web.
10. Aplicaţii Web Java
- Arhitectura aplicaţiilor Web Java.
- Tehnologii Java server side.
- Containere şi servere de aplicaţii.
- Servleturi Java. Ciclul de viata al unui servlet.
- Filtre.
- JSP (Java Server Pages). JSTL. Taguri customizate.
11. Alte tehnologii client side şi server side
- Applet-uri Java.
- Flash, Action Script.
- ASP (Active Server Pages).	

V. Bibliografie
1. Anghel T, Dezvoltarea aplicaţiilor Web folosind XHTML, PHP si MySQL. Editura Polirom, Iaşi, 2005
2. Boian F. M., Programare distribuită în Internet; metode şi aplicaţii. Editura Albastră, MicroInformatica, Cluj, 2005
3. Boian F.M., Boian R.F., Tehnologii fundamentale Java pentru aplicaţii Web. Editura Albastră, MicroInformatica, Cluj, 2005
4. Buraga S., Tehnologii Web. Editura Matrix Rom, Bucuresti, 2001
5. Buraga S., Proiectarea siturilor Web. Editura Polirom, Iaşi, 2002
6. Castro E., HTML for the World Wide Web with XHTML and CSS. 5'th edition, Visual QuickStart Guide, 2004
7. Hall M., Brown L., Core Web Programming. 2nd edition. Prentice Hall, 2001
8. W3Schools Online Web Tutorials, http://www.w3schools.com	

VI. Tematica activităţilor didactice pe săptămâni
Curs:

1.	Introducere în HTML. Structura unui document HTML. Taguri de bază.
2.	Formulare Web.
3.	Protocolul HTTP. Metodele GET, POST.
4.	CGI (Common Gateway Interface).
5.	JavaScript.
6.	Document Object Model. DHTML. jQuery.
7.	CSS (Cascade Style Sheets).
8.	Ajax.
9.	PHP. Accesarea bazelor de date (MySQL) folosind PHP. 
10. Securitate aplicatiilor Web.
11.	Aplicaţii Web Java. Containere şi servere de aplicaţii.
12.	Java Servlets.
13.	JSP (Java Server Pages).
14.	ASP (Active Server Pages).

Laborator:

1. Introducere în limbajul HTML. Prezentarea structurii unui document HTML şi a celor mai importante tag-uri. Fiind prima activitate didactică de tip laborator, studenţii trebuie doar să exerseze şi să reproducă exemplele prezentate de cadrul didactic.
2. Prezentarea formularelor Web şi a controalelor Web de tip input asociate. Temă de laborator: Reproducerea cât mai fidelă folosind tag-urile de baza a unui site cunoscut.
3. Prezentarea din partea cadrului didactic a protocolului HTTP cu exemple practice.
4. Temă de laborator: CSS.
5. Temă de laborator: CGI ca prima tehnologie server side.
6. Temă de laborator: Tehnologii client side: JavaScript. 
7. Temă de laborator: Mecanisme JavaScript avansate: Document Object Model (DOM). DHTML. jQuery.
8. Prezentarea funcţiilor de bază ale limbajului PHP ca prim limbaj de scripting evoluat server side. 
9. Accesarea bazelor de date (MySQL) folosind PHP. Demonstraţii practice din partea cadrului didactic. Temă de laborator.
10. Prezentarea unor exemple pe baza tehnologiei AJAX. Tema de laborator pe baza acestei tehnologii şi a tehnologiilor server side şi client side însuşite deja.
11. Prezentarea structurii aplicaţiilor Web Java. Instalare şi configurare container de aplicaţii. Studiu de caz: Tomcat.
12. Tema de laborator Java Servlets.
13. Tema de laborator Java Server Pages. Prezentarea unor facilităţi avansate JSP precum Custom Tags.
14. Predarea ultimelor laboratoare din partea studenţilor. Încheierea activităţii didactice. Măsuri organizatorice în ceea ce priveşte examenul final din sesiunea de examene.

Proiect:

Pe parcursul întregului semestru, studenţii care frecventează cursul de Programare Web vor trebui să-şi creeze o pagină personală pe sistemele server puse la dispoziţie de facultate, pagină în care să fructifice toate tehnologiile însuşite la acest curs. Această pagină va fi analizată din mai multe perspective, astfel:
-	tehnologiile client side folosite (HTML, JavaScript);
-	tehnologiile server side folosite (PHP, JSP, Servlet, ASP), comunicarea server side cu servere de date;
-	conţinutul, designul şi aspectul.
O cerinţă specială este dezvoltarea acestei pagini personale treptat pe măsura însuşirilor tehnologiilor de către student. Cadrul didactic va acorda o atenţie sporită dezvoltării graduale a paginii şi a evoluţiei conţinutului acesteia pe parcursul semestrului.	

VII. Metode didactice folosite
Expunerea: descrierea, explicaţia, prelegerea magistrală, prelegerea dialog, prelegerea cu demonstraţii, prelegeri introductive, prelegeri curente, prelegeri de sinteză. 
Conversaţia: dezbaterea, dialogul, conversaţii introductive, conversaţii de fixare şi consolidare a cunoştinţelor, conversaţii de sistematizare şi sinteză, conversaţii de aplicare.
Problematizarea: utilizarea întrebărilor-problemă, problemelor şi situaţiilor-problemă. 
Descoperirea: redescoperirea dirijată şi independentă, descoperirea creativă, descoperirea inductivă, descoperirea deductivă, descoperirea analogică, descoperirea prin documentare, descoperirea experimentală.	

VIII. Evaluare
Nota finală se calculează după următoarea formulă:

NotaFinala = 40%Laborator + 40%ExamenPractic + 20%ProiectIndividual

Proiectul individual constă în elaborarea de către student a unei pagini personale proprii care să fie bazată atât pe tehnologii Web client side cât şi server side, precum şi cu tehnologii midleware de conectare la baza de date. Examenul final este un examen practic în cadrul căruia în paginile dezvoltate în timpul examenului studentul trebuie să şi răspundă la anumite întrebări teoretice. Nota de la laborator consta în media aritmetică cu care sunt notate activităţile practice de laborator rezolvate de student pe parcursul semestrului. Pentru promovare fiecare din cele trei componente ale notei finale trebuie să fie cel puţin 5.

Informaţii actualizate despre curs se pot obţine la adresa: http://www.cs.ubbcluj.ro/~bufny/index.php?view=pw/pw.php	

IX. Bibliografie suplimentară
1. Chuck Musciano, Bill Kennedy, HTML & XHTML: The Definitive Guide, O'Reilly, 2002;
2. Jennifer Niederst, Web Design in a Nutshell, O'Reilly, 2001;
3. Colin Moock, ActionScript: The Definitive Guide - Mastering Flash Programming, O'Reilly, 2001;
4. Varlan C, Macromedia FLASH; concepte, exemple, studii de caz. Editura Polirom, Iaşi, 2004;
5. Negrino T., Smith D, JavaScript for the World Wide Web. 4th edition, Visual QuickStart Guide, 2001.	

	Decan,							Director departament,

	Data,							Titular curs,
								Lect. Dr.  BUFNEA Darius-Vasile