শনিবার, ১৮ জুন, ২০১১

Prim's and Kruskal Algorithm solution

Prim's Algorithm

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>

int cost[10][10],i,j,k,n,stk[10],top,v,visit[10],visited[10],u;
 
main()
{
    int m,c;
    cout <<"enterno of vertices";
    cin >> n;
    cout <<"ente no of edges";
    cin >> m;
    cout <<"\nEDGES Cost\n";
    for(k=1;k<=m;k++)
    {
        cin >>i>>j>>c;
        cost[i][j]=c;
    }
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        if(cost[i][j]==0)
        cost[i][j]=31999;
 
    cout <<"ORDER OF VISITED VERTICES";
    k=1;
    while(k<n)
    {
        m=31999;
        if(k==1)
        {
            for(i=1;i<=n;i++)
                for(j=1;j<=m;j++)
                if(cost[i][j]<m)
                {
                    m=cost[i][j];
                    u=i;
                }
        }
        else
        {
            for(j=n;j>=1;j--)
            if(cost[v][j]<m && visited[j]!=1 && visit[j]!=1)
            {
                visit[j]=1;
                stk[top]=j;
                top++;
                m=cost[v][j];
                u=j;
            }
        }
        cost[v][u]=31999;
        v=u;
        cout<<v << " ";
        k++;
        visit[v]=0; visited[v]=1;
    }
} 


Kruskal Algorithm

 #include<iostream.h>
#include<conio.h>
#include<stdlib.h>

int cost[10][10],i,j,k,n,m,c,visit,visited[10],l,v,count,count1,vst,p;
 
main()
{
int dup1,dup2;
cout<<"enter no of vertices";
cin >> n;
cout <<"enter no of edges";
cin >>m;
cout <<"EDGE Cost";
for(k=1;k<=m;k++)
{
cin >>i >>j >>c;
cost[i][j]=c;
cost[j][i]=c;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(cost[i][j]==0)
cost[i][j]=31999;
visit=1;
while(visit<n)
{
v=31999;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(cost[i][j]!=31999 && cost[i][j]<v  && cost[i][j]!=-1 )
{
int count =0;
for(p=1;p<=n;p++)
{
if(visited[p]==i || visited[p]==j)
count++;
}
if(count >= 2)
{
for(p=1;p<=n;p++)
if(cost[i][p]!=31999 && p!=j)
dup1=p;
for(p=1;p<=n;p++)
if(cost[j][p]!=31999 && p!=i)
dup2=p;
 
if(cost[dup1][dup2]==-1)
continue;
}
l=i;
k=j;
v=cost[i][j];
}
cout <<"edge from " <<l <<"-->"<<k;
cost[l][k]=-1;
cost[k][l]=-1;
visit++;
int count=0;
count1=0;
for(i=1;i<=n;i++)
{
if(visited[i]==l)
count++;
if(visited[i]==k)
count1++;
}
if(count==0)
visited[++vst]=l;
if(count1==0)
visited[++vst]=k;
}
 
 

SUM OF SUBSET problem solution

Complete code.Just run ! 

  #include"stdio.h"
    #include"iostream.h"
    #include"conio.h"

    int count,w[10],m,x[10];

    void subset(int cs,int k,int r)
    {
       int i;
       x[k]=1;
       if(cs+w[k]==m)
    {
       cout<<"\n Subset solution "<<++count<<endl;
       for(i=0; i<=k; i++)
       {
         if(x[i]==1)
         cout<<w[i]<<endl;
       }
     }

      else if(cs+w[k]+w[k+1] <=m)

        subset(cs+w[k],k+1,r-w[k]);

    if((cs+r-w[k]>=m)&&(cs+w[k+1])<=m)
    {
      x[k]=0;
      subset(cs,k+1,r-w[k]);
    }
    }

    int main()
    {   clrscr();
    int sum=0,i,n;
    cout<<"enter no of elements=\n";
    cin>>n;

    cout<<"Enter the elements in ascending order\n";
    for(i=0; i<n; i++)
    scanf("%d",&w[i]);
    cout<<"Enter the required sum\n";
    cin>>m;
    for(i=0; i<n; i++)
    {
    sum +=w[i];
    }
       if(sum < m)
        {
       cout<<"no solution exits\n";

      }
        cout<<"The solution is\n";
        count =0;
        subset(0,0,sum);
        getch();
        return 0;

      }

শুক্রবার, ১৭ জুন, ২০১১

How to write a good Report

How to Write a Good Report


This short document describes how to write a good report. This is based on common mistakes I have observed over a period of time. While most of the following apply in general, they have been written with BTech/MTech/PhD students in mind.
The comments below apply for course projects, other semester projects, technical reports, theses (BTech/MTech/PhD). That is, technical writing in general. While a google search on the topic may churn out many hits, the following is tailored for IIT (Kanpur) students in particular.
I will first mention some general guidelines, then the structure of the report. Towards the end, I will also describe how to refine your writing, and how to give feedback on others' writing. Based on these, I will recommend a possible strategy for producing high-quality reports which have high potential for being published.

General Guidelines
These are some general things you should know before you start writing. I will try to answer the questions of the purpose of report writing, and the overall approach as well.
Purpose of a report: writing to be read
A key thing to keep in mind right through your report writing process is that a report is written to be read, by someone else. This is the central goal of report-writing. A report which is written for the sake of being written has very little value.
Before you start writing your report, you need to have in mind the intended audience. In the narrowest of possibilities, your report is meant for reading by yourselves, and by your advisor/instructor, and perhaps by your evaluation committee. This has value, but only short-term. The next broader possibility is that your report is readable by your peers or your juniors down the line. This has greater value since someone else can continue on your work and improve it, or learn from your work. In the best case possibility, your report is of publishable quality. That is, readable and useful for the technical community in general.
Overall approach: top-down
Take a top-down approach to writing the report (also applies to problem solving in general). This can proceed in roughly three stages of continual refinement of details.
  1. First write the section-level outline,
  2. Then the subsection-level outline, and
  3. Then a paragraph-level outline. The paragraph-level outline would more-or-less be like a presentation with bulleted points. It incorporates the flow of ideas.
Once you have the paragraph-level flow of ideas, you can easily convert that into a full report, by writing out the flow of ideas in full sentences.
While doing the paragraph-level outline, think also about (a) figures, (b) tables, and (c) graphs you will include as part of the report at various stages. You will find that many things can be better explained by using simple figures at appropriate places.
Another thing to nail-down while doing the paragraph-level outline is the terminology you will be using. For instance, names of various protocols/algorithms/steps in your solution. Or names/symbols for mathematical notation.
The overall approach also includes multiple stages of refinement, and taking feedback from others (peers/advisor/instructor). I will talk about these in more detail after talking about the overall report structure.

Structure of a report
The following should roughly be the structure of a report. Note that these are just guidelines, not rules. You have to use your intelligence in working out the details of your specific writing.
  • Title and abstract: These are the most-read parts of a report. This is how you attract attention to your writing. The title should reflect what you have done and should bring out any eye-catching factor of your work, for good impact.
    The abstract should be short, generally within about 2 paragraphs (250 words or so total). The abstract should contain the essence of the report, based on which the reader decides whether to go ahead with reading the report or not. It can contain the following in varying amounts of detail as is appropriate: main motivation, main design point, essential difference from previous work, methodology, and some eye-catching results if any.
  • Introduction: Most reports start with an introduction section. This section should answer the following questions (not necessarily in that order, but what is given below is a logical order). After title/abstract introduction and conclusions are the two mainly read parts of a report.
    • What is the setting of the problem? This is, in other words, the background. In some cases, this may be implicit, and in some cases, merged with the motivation below.
    • What exactly is the problem you are trying to solve? This is the problem statement.
    • Why is the problem important to solve? This is the motivation. In some cases, it may be implicit in the background, or the problem statement itself.
    • Is the problem still unsolved? The constitutes the statement of past/related work crisply.
    • Why is the problem difficult to solve? This is the statement of challenges. In some cases, it may be implicit in the problem statement. In others, you may have to say explicitly as to why the problem is worthy of a BTech/MTech/PhD, or a semester project, as the case may be.
    • How have you solved the problem? Here you state the essence of your approach. This is of course expanded upon later, but it must be stated explicitly here.
    • What are the conditions under which your solution is applicable? This is a statement of assumptions.
    • What are the main results? You have to present the main summary of the results here.
    • What is the summary of your contributions? This in some cases may be implicit in the rest of the introduction. Sometimes it helps to state contributions explicitly.
    • How is the rest of the report organized? Here you include a paragraph on the flow of ideas in the rest of the report. For any report beyond 4-5 pages, this is a must.
    The introduction is nothing but a shorter version of the rest of the report, and in many cases the rest of the report can also have the same flow. Think of the rest of the report as an expansion of some of the points in the introduction. Which of the above bullets are expanded into separate sections (perhaps even multiple sections) depends very much on the problem.
  • Background: This is expanded upon into a separate section if there is sufficient background which the general reader must understand before knowing the details of your work. It is usual to state that "the reader who knows this background can skip this section" while writing this section.
  • Past/related work: It is common to have this as a separate section, explaining why what you have done is something novel. Here, you must try to think of dimensions of comparison of your work with other work. For instance, you may compare in terms of functionality, in terms of performance, and/or in terms of approach. Even within these, you may have multiple lines of comparison -- functionality-1, functionality-2, metric-1, metric-2, etc.
    Although not mandatory, it is good presentation style to give the above comparison in terms of a table; where the rows are the various dimensions of comparison and the columns are various pieces of related work, with your own work being the first/last column. See the related work section of my PhD thesis for an example of such a table :-).
    While in general you try to play up your work with respect to others, it is also good to identify points where your solution is not so good compared to others. If you state these explicitly, the reader will feel better about them, than if you do not state and the reader figures out the flaws in your work anyway :-).
    Another point is with respect to the placement of related work. One possibility is to place it in the beginning of the report (after intro/background). Another is to place it in the end of the report (just before conclusions). This is a matter of judgment, and depends on the following aspect of your work. If there are lots of past work related very closely to your work, then it makes sense to state upfront as to what the difference in your approach is. On the other hand, if your work is substantially different from past work, then it is better to put the related work at the end. While this conveys a stronger message, it has the risk of the reader wondering all through the report as to how your work is different from some other specific related work.
  • Technical sections: The main body of the report may be divided into multiple sections as the case may be. You may have different sections which delve into different aspects of the problem. The organization of the report here is problem specific. You may also have a separate section for statement of design methodology, or experimental methodology, or proving some lemmas in a theoretical paper.
    The technical section is the most work-specific, and hence is the least described here. However, it makes sense to mention the following main points:
    • Outlines/flow: For sections which may be huge, with many subsections, it is appropriate to have a rough outline of the section at the beginning of that section. Make sure that the flow is maintained as the reader goes from one section to another. There should be no abrupt jumps in ideas.
    • Use of figures: The cliche "a picture is worth a thousand words" is appropriate here. Spend time thinking about pictures. Wherever necessary, explain all aspects of a figure (ideally, this should be easy), and do not leave the reader wondering as to what the connection between the figure and the text is.
    • Terminology: Define each term/symbol before you use it, or right after its first use. Stick to a common terminology throughout the report.
  • Results: This is part of the set of technical sections, and is usually a separate section for experimental/design papers. You have to answer the following questions in this section:
    • What aspects of your system or algorithm are you trying to evaluate? That is, what are the questions you will seek to answer through the evaluations?
    • Why are you trying to evaluate the above aspects?
    • What are the cases of comparison? If you have proposed an algorithm or a design, what do you compare it with?
    • What are the performance metrics? Why?
    • What are the parameters under study?
    • What is the experimental setup? Explain the choice of every parameter value (range) carefully.
    • What are the results?
    • Finally, why do the results look the way they do?
    The results are usually presented as tables and graphs. In explaining tables and graphs, you have to explain them as completely as possible. Identify trends in the data. Does the data prove what you want to establish? In what cases are the results explainable, and in what cases unexplainable if any?
    While describing a table, you have to describe every row/column. And similarly while describing a graph, you have to describe the x/y axes. If necessary, you have to consider the use of log-axes.
    If you are presenting a lot of results, it may be useful to summarize the main take-away points from all the data in a separate sub-section at the end (or sometimes even at the beginning) of the results section.
  • Future work: This section in some cases is combined along with the "conclusions" section. Here you state aspects of the problem you have not considered and possibilities for further extensions.
  • Conclusions: Readers usually read the title, abstract, introduction, and conclusions. In that sense, this section is quite important. You have to crisply state the main take-away points from your work. How has the reader become smarter, or how has the world become a better place because of your work?

Refinement
No report is perfect, and definitely not on the first version. Well written reports are those which have gone through multiple rounds of refinement. This refinement may be through self-reading and critical analysis, or more effectively through peer-feedback (or feedback from advisor/instructor).
Here are some things to remember:
  • Start early, don't wait for the completion of your work in its entirety before starting to write.
  • Each round of feedback takes about a week at least. And hence it is good to have a rough version at least a month in advance. Given that you may have run/rerun experiments/simulations (for design projects) after the first round of feedback -- for a good quality report, it is good to have a rough version at least 2 months in advance.
  • Feedback should go through the following stages ideally: (a) you read it yourself fully once and revise it, (b) have your peers review it and give constructive feedback, and then (c) have your advisor/instructor read it.

Feedback: evaluating someone else's report
Evaluation of a report you yourself have written can give benefits, but it usually is limited. Even in a group project, it is not good enough to have one person write the report and the other person read it. This is because all the group members usually know what the project is about, and hence cannot critique the paper from outside.
It is best to take feedback from your peer (and of course return favours!). The feedback procedure is quite simple. The one reading has to critically, and methodically see if each of the aspects mentioned above in the "structure of the report" are covered. It may even help to have a check-list, although with experience this becomes unnecessary.
  • Check if the title/abstract make sense, are effective/eye-catching.
  • Are all the relevant questions answered in the introduction?
  • Is the overall structure of the rest of the sections meaningful?
  • Is the difference from related/past work crisp and meaningful?
  • Are the technical sections understandable? Are the figures/tables explained properly? Is the terminology clear? Are the symbols used defined appropriately?
  • Are the results explained properly? Are the conclusions drawn from the graphs/tables sound? Or are there technical holes/flaws? Do the results show how the work presented is better/worse that the other cases of comparison?
When I give feedback on a peer's report or a student's report, I usually take a print-out and mark-up at various points in the paper. You may follow a similar procedure, or something suited to you. Be as critical as possible, but with the view that your peer has to improve his/her work, not with the view of putting him/her down. Your comments have to be impersonal. Likewise, while taking feedback from a peer, take the comments on their technical merit.

Recommended strategy for producing a high-quality report
Based on the above, I recommend the following strategy for students who want to produce a high-quality report, which would then have a high potential for being turned into a publication:
  • Think through the outline of the report even as you are working on the details of the problem. Such thinking will also lend focus to your work and you will end up optimizing the returns on the time invested.
  • Two months before the actual deadline, you have to have at least a paragraph-level outline of the report, with all details worked out.
  • After one round of critical analysis by yourselves (or by your group), have another student or another group review it, perhaps in exchange for you reviewing their work. Have them check your flow of ideas. While it may be good to get someone working in the same area, for much of the feedback, this may not really be necessary.
  • Now you are probably about 6-7 weeks from the deadline. At this point, have your advisor/instructor give feedback on the paragraph-level outline. Getting this early is important since, based on this, you may have to reorganize your report, rework your theorems, or rerun your experiments/simulations.
  • Have a pre-final version of the report ready 2 weeks before the deadline. Again, go through one round of self/peer-feedback, and then advisor/instructor feedback.
  • With these 3-4 rounds of revision and critical analysis, the quality of your report is bound to improve. And since many of the student theses are of good quality, quality of writing dramatically improves chances of publication.

Some comments on “Research and Co-curricular Activities of Computer Science Students"

Some comments on “Research and Co-curricular Activities of Computer Students and Its Importance to Nation Building – By Kaykobad Sir”

Shameem Ahmed, Instructor and Research Assistant,
Marquette University, Milwaukee, Wisconsin, USA
www.shameemahmed.com ashameem38@yahoo.com, ashameem38@gmail.com


 First of all, I want to thank Kaykobad sir (one of the best teachers I have ever had) to bring out some very good points in his recent article. With a very simple way, he has described many important issues related to research and co-curricular activities. However, while I was reading the article, some questions/comments/concerns jumped out to me. This writing is nothing but sharing those with all of you.




Some comments:
[Kaykobad Sir] I still remember the interest with which first batches of students at BUET started learning computer programming and other aspects of the technology at their own initiative overlooking whatever deficiency we had in the faculty. In spite of the fact that we were ill-staffed, students were far-sighted enough to select CSE departments for their career building at a time when other departments were much better staffed with richer heritage and resources.

[My comments] Although sir mentioned here the first batches, I think he meant the same thing for all of the CSE, BUET students. In that case, I should say most of the CSE, BUET students (surely including me) chose CSE as a “hujug”. After completing the HSC exam, the students normally don’t have enough far-sight to think about their bright future. What they see around them, what they are advised from their guardians, what they are suggested by their senior students, they just blindly follow those. I think the current trend to choose the EEE department by the top students is nothing but the similar “hujug”.

[Kaykobad Sir] I must say that this praiseworthy effort of computer science academic community is unprecedented for any discipline in Bangladesh. We are doing it very loyally for the welfare of the country in spite of the fact that computer science education has remained largely ignored. It has remained unlucky in terms of investment for development of laboratory and other infrastructural facilities and above all faculty development although we have not fallen short of chalking out plans to earn $2 billion dollar by software export. How can one avoid investment on education where the whole industry is knowledge driven, and we are yet to earn goodwill and respect from other countries for our education, science and technology? To earn such a handsome figure presupposes at least 10% investment on education.

[My Comments] I agree with sir. However, I want to add more. Besides investing handsome figure in education, it is also needed to have opportunity for the students to apply their acquired skill. It requires having more quality software industries and I believe that we, the NRBs can contribute a lot in this regard. At least, some NRBs should think from the entrepreneurial perspective. Then “brain drain” will go to the reverse order which is probably called “Brain gain” (I heard this term couple of days ago). The skilled students would get a chance to utilize their proficiency; the young generation would have opportunity to be expert by doing work with the skilled ones. This achievement will gradually drive our country to the right path of economic development. India is also doing the same thing.

[Kaykobad Sir] Our students have beaten about sixty Indian teams in their own soil in computer programming contest, where Indians are earning billions of dollar through software export and other nations are already considering India as a super power in computing. This has happened at a time when in Bangladesh we are also dreaming of earning a sizeable amount of dollar through software export although possibly not yet quite well planned.

[My Comments] I am wondering whether sir wanted to make a proportional relation between “doing good in programming contest” and “earning money through software export”. I have respect for all the good programmers. We are really proud of Suman Da, Saikat bhai, Susam bhai, Mustaq bhai, Pappana bhai, Ferdous bhai, Shahriar Monzur bhai, Farah apu, Abdullah bhai, Ragib, PPM, Sazzad, Kamruzzaman, Asif, Saifur, Mehdi, Nasa, Manzurur, Abdullah, etc. They are our assets. As I also participated in several programming contests, I personally know many of our “Boss” programmers very well. I know that they are simply splendid. However the number of good programmers is not significant yet. What the statistics says? Always few programmers are doing very well in the competitions. The performance of the others is not as good as the “Bosses” or they don’t get any interest to participate in the contest at all. Programming contest is really very good way to motivate students to be good programmers. But we should realize that everybody won’t be a good programmer. To improve us, we have to have more software industry and more skilled software developer. And I believe that it is not very hard to make an interested student to a good software developer.


What should we do?

Besides all of these, I want to add some points that, I think, might be important:
  1. We should practice professionalism. Currently, many programming jobs, software development jobs, and service related jobs have been shifting from USA to India. Certainly the main reason is that they have many cheap yet skilled workers. But after talking to several guys closely related to the outsourcing business in USA, I found some other reasons and one of them is that Indians are very much professional.
  2. We should have very good communication skill. Even a mediocre Indian student is very good at communication.
  3. If a Indian/Chinese guy enters into a school/software company/industry/ anywhere else, within short period of time, the number of Indians/Chinese will increase exponentially. But alas, for our case, sometimes the multiplication factor becomes <1. However, I am very happy that this trend is changing. I personally know that Iqbal Bhai, Monzur Morshed bhai, Zulkarnain bhai are promoting the Bangladeshi students from their position. I personally got help from many senior brothers. My friends Ragib and PPM are also really trying very hard. This is truly a very positive sign.
  4. All of us should contribute (more or less, what we can do) from our position whether we are students or faculty members or service holders or entrepreneurs. Our combined contribution would be really huge for our beloved country.
  5. We all know that government can play a very important role. However, it is not wise to wait for a good ruler. May be, we won’t be fortunate enough to see such a ruler in our life. Then what we should do? We should raise our voice wherever and whenever needed. This is really a shame that we consider ourselves the creams of the creams but we can’t raise our own voice when required (I still remember the “Auto” event of BUET; only 4/5 students locked the BUET gate and we, several hundreds of students, were waiting outside the BUET gate). Also since we can’t wait for a good ruler, we ourselves will have to make our own way and I believe that there are lots of ways to do that.


BTW, I have concerns regarding trained teachers what Kaykobad sir mentioned several times in his article. I am wondering what might be the best way to train the teachers.

I would like to request you all to share your views. I firmly believe that such constructive discussion is urgently needed for the betterment of Bangladesh.

Finally I just want to repeat Kaykobad sir’s excerpt:
“ For a country like ours with a very high population density and not much resources other than human resources any sign of hope in the improvement of our lot will necessarily come through development of human resources. What else other than Information Technology can play a decisive role in this regard?”





CSE 1001 Research Directions in Computing


 CSE 1001 Research Directions in Computing

Posted in September 19th, 2010
For Starters


FREE Citation Management Software

  • What I suggest for this assignment: Citation Machine
    • use APA or MLA
    • Click on “More” to get conference paper form
  • My search topics
    • computer chess
    • biometric face recognition
    • search engine optimization

General Information


Logging in from Home

  • Need to use Passport York to authenticate as a York user
  • Information here on logging in
  • Remember: need to type in name of eresource using “by title” link after logging in.
Finding Resources at the Library
Finding Books & Journals

  • Do a search in The York Catalogue:
    • by title: Concurrent programming in Java : design principles and patterns
    • by author: Bjarne Stroustrup
    • by journal title: journal of the acm
    • by subject: Java
    • by subject: concurrent programming, parallel programming, parallel
      processing
    • by keyword: concurrent and programming and java
Online Computer Books

Finding Articles

These online databases can also be found in the eResources Quick Links or Search boxes on the library home page.
Full Text Article Databases
Article Citation Databases
And on the open web…
  • Using Google as a scholarly research tool:
    • example: concurrent programming
    • example: concurrent programming locking
    • example: concurrent programming locking algorithm
    • example: concurrent programming locking algorithm java
    • strategy: find good portal sites
    • strategy: make sure you know exactly who produced the content
Subscription library databases…
  • INSPEC — best source for citations in all computing fields, best for comprehensive searches (combined with Compendex)
    • concurrent and aerospace and programming
    • concurrent and locking and java
  • Web of Science — Very good coverage of all major computing journals, good for citation searches
    • concurrent and locking and java
  • Scopus — another good general database with citation information
  • ACM Guide to Computing Literature — Another one focusing on computing
  • VERY IMPORTANT: look in full text article databases for conference
    proceedings
    • IEEE, ACM or Lecture Notes in Computer Science: look in DBs below
    • SPIE: keyword search in catalogue: SPIE and proceeding #
    • Other: keyword search with part of title
    • Last resort: 50-75% of conference papers usually on author’s home pages
    • Remember, you have 50 free article requests!
And your Assignment is!
Due date: Wednesday September 29, 2010.  12 midnight.
To submit:
  • send and email to jdupuis at yorku dot ca
  • Subject line *must* have CSE 1001 in it.
  • Please include your name and student number.
What: Pick any CSE related topic and send me 4 references related to that topic
  • 1 book (print or ebook) that is available via the York Libraries
  • 1 journal article that is available via the York Libraries
  • 1 conference proceeding article that is available via the York Libraries
  • 1 site on the open web
Format:
  • In the email, list your topic then all four citations one after another
  • If the database has an exportable citation format (including BibTex), that is fine.
  • If not, use the Citation Machine and either APA or MLA format.
  • Online sources must have a URL that I can click on campus to access the item
  • For the book, please give the link to the catalogue record, if available
To contact me:
Office: Steacie 102H
Email: jdupuis@yorku.ca
MSN IM: john_dupuis@hotmail.com
Also I’m on Twitter, FaceBook and Friendfeed. The Steacie Library is also on Facebook and Twitter.