Blog infoarena

imSMART - Editia I

freak93
Adrian Budau
22 aprilie 2012

În perioada 9 aprilie – 27 mai, Asociaţia Studenţilor la de Matematică şi Informatică (ASMI), cu sprijinul Facultaţii de Matematică şi Informatică din cadrul Universităţii din Bucureşti organizează concursul imSMART, adresat tuturor studenţilor pasionaţi de informatică, matematică şi tehnologie.

imSMART caută persoane care cred cu tărie în ideile lor şi au curajul de a îmbina tehnologiile, căutând combinaţia perfectă, care să reflecte viziunea unei aplicaţii ce depăşeşte barierele actuale.
Scopul principal al acestui eveniment este de a reuni studenţi, tineri cercetători şi profesionişti din domeniile informaticii şi matematicii pentru a le oferi un cadru propice în care să se cunoască, să-şi împărtăşească preocupările şi să pună bazele unor colaborări.

Caravana imSMART a dat start proiectului. Prin intermediul ei, studenţii de la facultăţile de profil din întreaga ţară pot afla toate detaliile acestui concurs. Traseul ei include centrele universitare din Bucureşti, Timişoara, Cluj, Arad, Braşov, Iaşi, Sibiu, Craiova, Galaţi, Bacău, Ploieşti.
Concursul constă în mai multe etape:

  • 9 aprilie – 2 mai – Înscrierea propunerilor de proiect pe site-ul competiţiei
  • 2-4 mai – Anunţarea echipelor finaliste
  • 25 – 27 mai – Finala la Bucureşti: Prezentarea proiectelor finaliste în faţa juriului

Deznodământul competiţiei imSMART îl vom afla la finala de la Bucureşti, unde spiritul de inovaţie va fi întreţinut prin premierea celor mai bune aplicaţii înscrise în concurs.
Finala imSMART va include workshop-uri şi prezentări ale firmelor partenere.

Pentru detalii suplimentare:
imSmart
Pagina de facebook

 Comentarii (0)

Categorii:

Merită să faci o facultate?

filipb
Filip Cristian Buruiana
16 aprilie 2012

Eu cred că da. În continuare tot ce scrie mai jos se bazează doar pe experienţa proprie, deci exemplele sau afirmaţiile se referă la Facultatea de Automatică şi Calculatoare din UPB, iar concluziile sunt doar o părere personală şi nu un adevăr general valabil.

Prin verbul "a face" din titlu înţeleg nu doar promovarea, ci şi depunerea unui efort constant. Mai mult, nu mă refer la o motivaţie extrinsecă - "programatorii nu mai plătesc impozit", "obţin şi eu o diplomă". Mă refer la motivaţia intrinsecă, personală, care ar trebui să fie cel puţin la fel de importantă ca prima. M-am decis să scriu despre subiectul ăsta pentru că aud de prea multe ori: "se fac numai lucruri inutile", "nu mă ajute la nimic", şi nu sunt de acord cu asta.

Cred că rolul unei facultăţi nu este să te scoată vre-un guru într-un anumit domeniu. Rolul unei facultăţi este să îţi ofere o perspectivă cât mai generală asupra unor subiecte foarte variate, din care să poţi alege mai târziu, pe plan profesional, ce iţi place şi ce nu. Trebuie să găseşti lucrul la care esti cel mai productiv şi aria în care ai impactul maxim. De exemplu, nu sunt mare fan al jocurilor pe calculator, dar mi-a placut mult să joc GTA şi mă gândeam că ar fi fain sa programez la aşa ceva. Am făcut grafică la facultate şi am fost chiar foarte entuziasmat la început. Am scris propriul joc 3D cu maşini la care am lucrat o săptămână în vacanţa de iarnă, dar după asta nu prea mai eram aşa entuziasmat şi mi-am dat seama că pe termen lung nu mi-ar plăcea să fac asta. La fel, am crezut că imi place să lucrez low-level şi am ales Sisteme de Operare 2 la facultate. Deşi e interesant, dupa ce am scris nişte drivere mici şi am citit ceva cod kernel, mi-am dat seama ca e mult prea de detaliu şi că, cel puţin pentru moment, vreau să mă orientez către altceva.

Vederea de ansamblu de care am vorbit mai sus nu o obţii nici alegând un job la o firmă, fie ea şi de top. Jobul îţi permite să explorezi, dar până la un anumit nivel. Da, ai o grămadă de lucruri de învăţat, dar în general ele converg. Nu o să ai ocazia în cadrul unui job să foloseşti şi motoare grafice şi tehnologii web, să scrii compilatoare şi drivere, să foloseşti reţele neurale şi algoritmi genetici sau să pui o reţea pe picioare. Singurul loc unde divergenţa asta are sens este în timpul studiilor.

Desigur, alternativa în care te focusezi să lucrezi la ce îţi place şi nu pui accent pe facultate stă în picioare atâta timp cât eşti super capabil, responsabil, şi ştii să îţi valorifici timpul la maxim. Totuşi, una este să ai un deadline personal, şi alta este să ştii că ai un deadline impus pe care nu poţi să îl ratezi. Mediul pe care facultatea ţi-l oferă e mai apropiat de viaţa reală, şi cu cât te obişnuieşti cu anumite restricţii mai devreme cu atât mai bine. În plus, facultatea nu ar trebui să fie numai acumulare de cunoştinţe. Networking-ul pe care îl faci la facultate e la fel de important, pentru că de fapt interacţionezi cu viitori experţi din acelaşi domeniu, la care poţi avea deschidere mai târziu. Din ce am mai văzut sau auzit, aici cred că este şi diferenţa dintre o facultate de top din România şi una de top din afară, de exemplu. Nu neapărat în cunoştinţele pe care le dobândeşti, care pot fi cel puţin comparabile. Şi nu neapărat în resursele pe care le primeşti, pentru că, cel puţin pe IT, nu avem nevoie de super-laboratoare sau substanţe rare pe care, din motive financiare, să nu le găsim la noi.

Tu ce crezi? Merită să faci o facultate?

 Comentarii (14)

Categorii:

Google internships pentru studentii din anul intai

MarcvsHdr
Mihai Leonte
15 aprilie 2012

Google EMEA (Europe, Middle East and Africa) lanseaza anul acesta un program de internship-uri special pentru studentii de anul 1 care studiaza Computer Science, Software Engineering sau un domeniu conex. Detalii suplimentare gasiti in mesajul de mai jos. Pentru cei interesati, nu uitati ca deadline-ul este pe 27 Aprilie si competitia este stransa, deci trebuie sa va grabiti cu aplicatia.

Google internships available for 1st year students!

If you a first year undergraduate, studying Computer Science, Computer Engineering, Informatics, or a closely related technical field, and interested in an internship this summer, we would like to invite you to apply for our Engineering Trainee Summer Programme.

What are the requirements? You need to be:
Be studying Computer Science, Computer Engineering, Informatics, or a closely related technical field.
Have completed your first year of Bachelors studies by Summer 2012
Have programming experience in either Java, Python, C, or C++
Be available between 2nd July - 7th September 2012

How to apply: Visit this link to learn more about the program and apply before the 27th April 2012 deadline.

 Comentarii (4)

Categorii: google internships

Suma 15 (solutie)

Cosmin
Cosmin Negruseri
09 aprilie 2012

Solutia primita pe mail de la Catalin Francu:

Fie un joc cu nouă obiecte pe o masă, din care doi jucători iau pe rând câte unul. Există 8 seturi anume de câte trei obiecte care sunt câştigătoare. Despre ce joc vorbim? :-)

N-am dus până la capăt reducerea riguroasă, dar ar fi cam aşa

- Seturile câştigătoare sunt 159, 168, 249, 258, 267, 348, 357, 456.
- Le aşezăm într-un pătrat magic, să zicem

6 1 8
7 5 3
2 9 4

- Problema se reduce la X şi 0, dacă demonstrăm că o secvenţă de numere corespunde unei secvenţe de mutări la X şi 0 şi invers.

Cred că nu e prea greu. La secvenţe legale de numere corespund mutări legale şi invers. Când o secvenţă de numere în suma-15 duce la victorie, mutările corespunzătoare din X şi 0 duc la victoria aceluiaşi jucător (aici ar trebui demonstrat riguros că e absurd ca în suma-15 să ai victorie şi în X şi 0 jocul să continue).

 Comentarii (0)

Categorii:

Putina recursivitate

Cosmin
Cosmin Negruseri
07 aprilie 2012

Recursivitatea e un concept care da batai de cap elevilor la informatica.

Melodia Pseudofabula mi se pare un exercitiu misto pentru acesta idee.

Voi cum ati explica recursivitatea unui elev de gimnaziu?

 Comentarii (12)

Categorii:

Suma 15

Cosmin
Cosmin Negruseri
05 aprilie 2012

O problema misto pe care am auzit-o prima data de la Mihai Patrascu:

Pe o masa sunt 9 carti de joc. Acestea sunt numerotate de la 1 la 9. Doi jucatori alterneaza. La fiecare pas iau cate o carte. Primul jucator care obtine suma 15 din trei carti dintre cele pe care le-a luat castiga jocul. Daca nici un jucator nu poate forma suma dupa ce s-au distribuit toate cartile, jocul se termina in remiza. Se cere sa se determine daca primul jucator are sau nu strategie de castig.

O puteti discuta in comentarii. Daca ati mai vazut-o, va rog nu deconspirati solutia.

 Comentarii (10)

Categorii:

Importanţa comunităţilor

trebedea
Traian Rebedea
29 martie 2012

Poate unul dintre lucrurile care ne scapă din vedere, mai ales atunci când suntem mai tineri, este importanţa comunităţilor şi a colegilor în dezvoltarea noastră profesională. Fie că este vorba despre colegi de clasă, comunităţi de practică, colegi de muncă sau diverse organizaţii care sprijină domeniul nostru de activitate prin organizarea unor acţiuni diverse, toate acestea pot avea un impact semnificativ pentru fiecare dintre noi.

Participanţii la olimpiade reprezintă un prim exemplu de astfel de comunitate. Prezenţa în această comunitate pentru o perioadă cât mai îndelungată aduce avantaje, atât pe termen scurt - prin îmbunătăţirea cunoştinţelor şi obţinerea de rezultate mai bune, dar mai ales pe termen lung - prin stabilirea unor relaţii care îţi pot influenţa atât perspectivele de viitor şi viziunea asupra lucrurilor, dar şi care îţi pot asigura anumite oportunităţi de colaborare pe care altfel nu le-ai fi avut. Totuşi, de multe ori în spatele fiecărui participant individual se află grupuri mai mari, conduse de către un profesor, pregătite de către un coleg mai mare sau rezultate din organizarea unor clase speciale în care sunt grupaţi mai mulţi elevi cu interese şi pasiuni comune, dublate de rezultate şi muncă. Bănuiesc că cele mai cunoscute astfel de grupuri sunt reprezentate de Clubul copiilor (sau alte cluburi asemănătoare), clasele de olimpici din anumite licee (CNITV, ICHB, etc.), dar şi şedinţele de pregătire organizate de către foşti olimpici.

Totuşi, chiar dacă nu participi sau nu ai rezultate notabile la olimpiade, poţi creşte împreună cu colegii de clasă, poate într-un ritm mai puţin suţinut, dar până la urmă vei putea ajunge bun în informatică. În special, dacă ai colegi pasionaţi şi dornici să lucreze şi să înveţe lucruri noi cu care poţi discuta şi evolua. Deci nu trebuie niciodată subestimată importanţa colegilor de clasă sau de facultate cu care ajungi să interacţionezi.

Totuşi, poate că lucrul cel mai important pentru o carieră de succes îl reprezintă comunităţile de practică [1]. Poate că definiţia din subsol pare evidentă, dar ea cuprinde nişte lucruri esenţiale pentru orice bun profesionist, atât în informatică, dar şi în orice alt domeniu: schimburile de informaţii şi experienţe profesionale personale în cadrul unui grup de oameni pasionaţi de către acelaşi domeniu reprezintă cea mai bună modalitate de dezvoltare. Participarea la olimpiade sau asocierea cu alţi colegi pasionaţi de informatică reprezintă doar un prim pas în direcţia potrivită, dar rezultatele pot fi mult mai bune dacă comunitatea de practică este mai dezvoltată. Consider că acesta este rolul cel mai important pe care îl are infoarena, fiind cea mai puternică comunitate de practică în informatică şi calculatoare din România. Oricine vrea să aibă un viitor în domeniul nostru poate folosi infoarena atât pentru a-şi dezvolta aptitudinile, dar şi pentru a interacţiona cu colegi de vârstă şi nivel de cunoştinţe similare, având în acelaşi timp o perspectivă destul de largă asupra posibilităţilor sale de evoluţie prin implicarea membrilor seniori. Un alt exemplu de comunitate de practică de succes pe care o ştiu îndeaproape şi ale căror rezultate le apreciez este ROSEdu din A&C-UPB. Probabil există şi alte astfel de comunităţi de care m-aş bucura să aflu din comentariile voastre.

Apoi, nu trebuie niciodată să uitaţi că locul de muncă nu trebuie doar să vă asigure un venit, ci în primii ani de carieră este mai degrabă important să aveţi de la cine învăţa. Dacă nu puteţi lucra cu colegi de muncă mai buni ca voi, încercaţi să lucraţi măcar cu colegi la fel de buni ca voi. Însă, în majoritatea ocaziilor colegii de muncă reprezintă specialişti de la care poţi învăţa când eşti la început de carieră. When you are young, work to learn, not to earn! (Robert Kiyosaki [2])

Nu în ultimul rând, cred că trebuie menţionate şi acele comunităţi care vor să îmbunătăţească diverse componente din cariera unui student, dar nu numai. Astfel, de opt ani de zile în România există Stagii pe Bune (sper să nu se supere nimeni pentru auto-promovare) care a ajuns să facă practica în companiile de ICT din România dintr-o rara avis în ceva uzual şi la care orice student are acces. Tot aici cred ca intră toţi colegii mei care organizează practica în laboratoarele de cercetare din facultate, dar şi alte grupuri care promovează antreprenoriatul, etc.

La finalul unui alt articol destul de lung, cred că unul dintre lucrurile pe care le resimt cel mai mult în România este insuficienta dezvoltare a acestor comunităţi. Ele au apărut de puţin timp relativ cu alte ţări şi de multe ori au probleme cu continuitatea dezvoltării. Din motive evidente, cei mai buni membri ai comunităţilor părăsesc ţara când sunt destul de tineri şi nu toţi mai vor să dea ceva înapoi. Probabil este şi vina noastră pentru că după atâta timp nu putem avea nici o facultate cu o comunitate de alumni funcţională, dar sper să reuşim să rezolvăm aceste probleme şi să avem comunităţi mai multe şi mai puternice. Evident că aceste lucruri nu pot fi făcute decât cu ajutorul nostru, al tuturor; chiar dacă aparent nu câştigi nimic din crearea şi intreţinerea unei comunităţi, pe termen mai lung avantajele sunt enorme pentru toţi membrii lor [3].

[ 1 ] - Community of practice : a group of people who share a craft and/or a profession. The group can evolve naturally because of the members' common interest in a particular domain or area, or it can be created specifically with the goal of gaining knowledge related to their field. It is through the process of sharing information and experiences with the group that the members learn from each other, and have an opportunity to develop themselves personally and professionally (Lave & Wenger 1991)
[ 2 ] - Robert Kiyosaki
[ 3 ] - vezi Silicon Valley

 Comentarii (5)

Categorii:

Doua fire, patru variabile

rgrig
Radu Grigore
26 martie 2012

Toate prezentările legate de modele de memorie încep cu următorul exemplu:

{ X = Y = 0 }
  parallel
    Y := 1
    a := X
  and
    X := 1
    b := Y

Literele mari X şi Y sunt variabile globale; literele mici a şi b sunt variabile locale.
Explicaţi de ce e posibil ca la final a = b = 0.

 Comentarii (8)

Categorii:

Cum sa scrii programe la concursuri si nu numai

Cosmin
Cosmin Negruseri
23 martie 2012

Continuam seria sfaturilor inainte de ONI. Acum despre coding.

Citeste atent problema
Se intampla frecvent, sub presiunea concursului, sa intelegi problema gresit. Citeste-o atent si uita-te la exemple ca sa nu ai surprize neplacute.

Gandeste-te bine la solutie inainte sa scrii cod
Incepatorii se arunca sa implementeze prima idee. Apoi dupa timp bun de codare si depanare au surpriza ca algoritmul lor e gresit. Incearca ideea ta pe cateva exemple sa te convingi ca merge inainte sa scrii cod.

Fa teste si brute force-uri
Un set initial de teste bune ajuta foarte mult la implementarea unei solutii bune. Cateva exemple mici care testeaza cazul normal de functionare si doua teste extreme (n = 1 si n = MAX).
E foarte util sa ai si o solutie naiva de care te poti convinge usor ca e corecta. Ajuta la implementarea solutiei eficiente, si in caz ca nu iti vine in minte o solutie eficienta prinzi oricum cam 40 de puncte pe problema.

Cunoaste bine particularitatile limbajului de programare
Trebuiei sa stii cum se face citirea (cu buffer sau fara, parsezi datele sau nu si afisarea (numere reale, stringuri …).
In C++ STL e important, uita-te la sort, map, hash_map, set, pair, vector ca sa le poti folosi fara sa cauti documentatie prin librarii.

Conventii de coding
Concurentii la concursuri de programare folosesc frecvent variabile de genul ii, iii, x1, xx1, y0. Iti sugerez sa folosesti nume bune si in general conventii de coding . (e mai greu sa incurci intre ele sum si prod decat a si b)

Scrie cod incremental
In liceu, scriam tot codul ce rezolva o problema, apoi ma apucam de depanat. Am vazut mai tarziu ca, scriind cod bucata cu bucata si testand bucatile intermediare, ajung mult mai repede la o solutie functionala. Gandeste-te bine cum poti sa imparti solutia in pasi intermediari si sa verifici usor ca fiecare pas e corect.

La antrenamente fa mai multe solutii pentru o problema
Codul scurt si clar e usor de depanat si probabilitatea sa aiba buguri e mica. Astfel la antrenamente rescrie un program de mai multe ori pana ajungi la o solutie scurta si curata. Uita-te pe siteuri ca infoarena sau topcoder cum fac cei mai buni si incearca sa intelegi de ce au solutii mai scurte sau mai clare.

Partea misto e ca ideile de mai sus se aplica foarte bine si in contextul muncii in industrie.

Voi ce sfaturi aveti legate de implementare?

 Comentarii (2)

Categorii:

Idei proaste :)

wickedman
Cristian Strat
20 martie 2012

A hacker who has learned what to make, and not just how to make, is extraordinarily powerful. [ Paul Graham ]

În timpul liceului mi-a plăcut foarte tare să particip la InfoEducaţie. (Pentru cine nu ştie, la InfoEducaţie vin elevi de liceu din toată ţara să-şi prezinte proiectele software personale - în general aplicaţii web, software utilitar sau educaţional.) Mi se părea extraordinar să pornesc de la o idee şi să construiesc ceva “complet” - adică să funcţioneze dar să şi arate bine, să fie uşor de utilizat dar şi suficient de complex, documentaţie, identitate vizuală, etc. În plus era foarte incitant (şi înfricoşător!) să prezinţi un demo în faţa juriului şi a altor 50-100 de concurenţi gata să te îngroape cu întrebări răutăcioase şi feedback negativ. :)

Ca participant cred că am văzut peste 100 astfel de prezentări şi la multe încă îmi aduc aminte cum arătau şi ce făceau.

După liceu am continuat să merg la InfoEducaţie, însă ca membru al juriului. Am fost invitat şi la alte concursuri similare - InfoMatrix şi Unirea - şi de fiecare dată am participat cu plăcere. De partea juriului am mai văzut încă vreo 250 de lucrări şi am început să observ nişte patterns.

Sunt câteva idei de proiecte neinspirate care se repetă an de an la aceste concursuri. Am scris blog post-ul acesta ca să te conving să le eviţi cu orice cost, să nu cumva să te atingi de ele! :)

Indiferent de ce idee de proiect îţi alegi va fi la fel de greu să o scoţi la capăt. Dacă tot trebuie să munceşti la fel de mult şi să pui suflet la fel de tare, de ce să nu lucrezi la ceva inspirat?

1) Site-ul liceului

De la site-uri statice şi până la admin panel pentru actualizarea listei de directori care au condus instituţia de învăţământ, site-ul liceului este o idee foarte populară. Uneori site-ul ajunge să înlocuiască versiunea oficială (construită de un elev mai mare, tot pentru un concurs), însă din păcate nimănui nu-i pasă. Când ai intrat ultima oară pe site-ul liceului tău?

2) Catalogul virtual

Web-based sau cross-platform desktop app, notificări prin SMS, rapoarte PDF, criptografie şi nivele de acces, catalogul virtual îţi permite variaţiuni nelimitate şi un pretext să implementezi orice îţi trece prin cap.

Sincer nu înţeleg de unde izvorăşte atât interes pentru cataloage. :) Mie mi se făcea rău când le vedeam.

3) Pădura spânzuraţilor, Arbori binari, Planul înclinat, etc.

În categoria aceasta intră toate proiecte software care îşi propun să prezinte un subiect din programa şcolară într-un mod interactiv. E un fel de referat, dar software. Problema lor este că au o aplicabilitate foarte limitată – suplimentează nişte pagini de manual peste care treci la clasă într-o săptămână.

4) Music Player

Inspirat de Winamp, facilitatea principală oferită de această aplicaţie este schimbarea skin-ului. Pe locul doi: actualizarea automată a status-ului de Messenger. Ideea îţi permite să-ţi etalezi gusturile muzicale în faţa juriului atunci când faci demo. (Dar asta e cu două tăişuri. :P)

Problema la Music Player este că nu convinge pe nimeni, nici măcar pe autor, că e o alternativă mai bună.

5) Blog

Foarte clar ce-i de făcut, ideea de blog engine este populară şi de fiecare dată abordată la fel. Pentru că autorul nu este la rândul lui blogger, cea mai unusable secţiune este de obicei cea în care trebuie să redactezi post-uri.

Acest notepad.exe al aplicaţiilor web nu-ţi permite să te diferenţiezi decât prin câte features din lista standard ai apucat să implementezi.

6) CMS, Site Builder, 3D Game Engine

În această categorie intră “platformele”, sau chestiile care încearcă să rezolve o problemă generală precum construirea unui site sau a unui joc. De obicei acestea sunt lucrări foarte “grele”, adică autorii au investit extrem de mult timp în ele şi au dat dovadă de multă pricepere tehnică. Efortul este impresionant şi de lăudat.

Să faci o platformă nu e o idee rea în sine, însă orice platformă de succes are la bază o killer application. O platformă este bună în măsura în care aplicaţiile pe care le permite sunt bune. Aici cele mai multe proiecte lasă de dorit. Site-ul contruit de site builder este foarte limitat, sau din multitudinea de jocuri pe care game engine-ul tău o permite nu poţi demonstra nici unul.

Problema mea cu ideile de mai sus este că sunt pur didactice, pur exerciţiu, că nu au aplicabilitate, că nu îşi propun să convingă oameni reali să le utilizeze. De multe ori elevii nici nu se gândesc serios la ce să lucreze. Pur şi simplu aleg o idee “default” şi încep să codeze.

Atunci când începi un proiect personal ai ocazia să faci un exerciţiu foarte profund - să cântăreşti greutatea unei idei, cât de ambiţioasă e, cum se diferenţiază, cui i-ar păsa, ce audienţă are, cum inovezi, de ce îţi pasă ţie, şamd. Întrebările acestea sunt foarte grele iar la multe nu vei avea răspunsuri, însă numai exerciţiul de gândire te va face să priveşti altfel lucrurile. Există idei care îţi merită întreaga atenţie, care te pasionează şi pentru care eşti dispus să depui efort şi suflet. Găseşte-le.

Voi aţi participat vreodată la concursuri de proiecte? Ce aţi prezentat?

 Comentarii (18)

Categorii:
Vezi pagina: 12345... 67891011 1213141516... 3637383940 (394 rezultate)